抛出异常后执行代码

taw*_*eed 0 java

所以我的设计有一些情况,并想知道我是否能得到一些反馈.

public class Class1 {
    public void eatFish(){}
}

public class Class2 {
    public void eatBacon(){
        // some nasty code here to cause an exception
    }
}

public class Class3 {
    public void eatFruit(){}
}

public InvokeAllClasses() {
    public static void main(String[] args) {
        Class1 c1 = new Class1();
        Class2 c2 = new Class2();
        Class3 c3 = new Class3();

        c1.eatFish();
        c2.eatBacon();
        c3.eatFruit();
    }
}
Run Code Online (Sandbox Code Playgroud)

在InvokeAllClasses中查看问题是因为c2.eatBacon(); 爆炸,c3.eatFish()不会执行.有没有办法仍然执行 c3虽然c2爆炸?

更新

在考虑了更多之后,我想我可以将每个调用包装在一个try...catch块中,但这只是凌乱.

But*_*ass 5

try... catch放在方法定义中:

public void eatBacon(){
    try{
        // some nasty code here to cause an exception
    } catch(Exception e){
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这不会像调用方法时那样糟糕.如果您知道代码中的确切位置可能会发生异常,那么只能包围这些语句.

  • 在源代码中吞下所有异常可能不是一个好主意,除非调用这些方法的进程都不关心异常. (2认同)