异常后java如何继续?
我星期一有考试,所以正在做一些准备。现在我做了一个练习,看看java如何处理异常 我需要分析以下代码:异常后java如何继续?,java,exception,exception-handling,try-catch,Java,Exception,Exception Handling,Try Catch,我星期一有考试,所以正在做一些准备。现在我做了一个练习,看看java如何处理异常 我需要分析以下代码: public class ExceptionsExercise { private int x; private class E1 extends Exception { E1() { super("exception E1"); } } private class E2 extends Excepti
public class ExceptionsExercise {
private int x;
private class E1 extends Exception {
E1() {
super("exception E1");
}
}
private class E2 extends Exception {
E2() {
super("exception E2");
}
}
private class E3 extends Exception {
E3() {
super("exception E3");
}
}
public void run() throws E1, E3 {
try {
doA();
System.out.print("3 ");
} catch (E2 e) {
System.out.print("4 ");
} finally {
System.out.print("5 ");
}
System.out.print("6 ");
}
public void doA() throws E1, E2, E3 {
if (x == 1) {
throw new E1();
} else if (x == 2) {
throw new E2();
} else {
doB();
System.out.print("7 ");
}
}
public void doB() throws E3 {
if (x == 3) {
System.out.print("8 ");
throw new E3();
} else {
System.out.print("9 ");
}
}
public static void main(String[] args) {
Main thisInstance = new Main();
for (int i = 0; i < 4; i++) {
thisInstance.x = i;
System.out.println("");
System.out.print("x = " + i + " ");
try {
thisInstance.run();
} catch (E1 e) {
System.out.println("0");
} catch (E3 e) {
}
System.out.println("2 ");
}
}
}
公共类例外练习{
私人INTX;
私有类E1扩展了异常{
E1(){
超级(“例外E1”);
}
}
私有类E2扩展了异常{
E2(){
超级(“例外E2”);
}
}
私有类E3扩展了异常{
E3(){
超级(“例外E3”);
}
}
public void run()抛出E1、E3{
试一试{
doA();
系统输出打印(“3”);
}渔获物(E2 e){
系统输出打印(“4”);
}最后{
系统输出打印(“5”);
}
系统输出打印(“6”);
}
公共无效doA()抛出E1、E2、E3{
如果(x==1){
抛出新的E1();
}else如果(x==2){
抛出新的E2();
}否则{
doB();
系统输出打印(“7”);
}
}
public void doB()抛出E3{
如果(x==3){
系统输出打印(“8”);
抛出新的E3();
}否则{
系统输出打印(“9”);
}
}
公共静态void main(字符串[]args){
Main thisInstance=new Main();
对于(int i=0;i<4;i++){
thisInstance.x=i;
System.out.println(“”);
系统输出打印(“x=“+i+”);
试一试{
thisInstance.run();
}渔获物(E1 e){
系统输出打印项次(“0”);
}渔获物(E3E){
}
系统输出打印项次(“2”);
}
}
}
现在的问题是输出是什么。但是我有一些问题。例如,当在方法中捕获执行选项时,该方法是否继续正常?与捕获异常e2后的run()方法类似
相反的情况是当一个方法没有捕获异常时。然后就是最后执行的块,然后方法中断。因此in run()中的System.out.print(“6”);没有被执行吗
非常感谢首先,您可以运行代码查看结果 在方法中捕获执行选项时,该方法是否正常继续 对。我的意思是它将继续下去。例如,如果doA()引发异常,则run()方法不会打印“3”。(但它将始终打印“5”,因为最终 然后只执行finally块,然后方法中断。因此在in run()中不执行System.out.print(“6”)
最后,block总是在try block之后执行。是否异常。现在的问题是输出是什么:编译并运行代码,您会看到。我知道输出,这不是我的问题。我的问题是,我不知道java对这两种情况的反应。分析输出并得出结论如何?添加println如何代码中的语句了解更多信息?如何使用调试器逐行执行代码。这些都是简单的事情,您应该能够自己完成。或者您可以阅读任何有关异常的书籍或教程。您确实“知道Java对这两种情况的反应”。程序的输出告诉您。不清楚您在问什么,是吗va语言规范和首先处理的是什么?抛出到调用它的方法或finally块的异常?首先将在catch块中处理异常。然后运行finally块