异常后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

我星期一有考试,所以正在做一些准备。现在我做了一个练习,看看java如何处理异常

我需要分析以下代码:

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块