2 回答
TA贡献1830条经验 获得超3个赞
顺便说一句,正确的方法是ArithmeticException在需要时允许结束程序。
public class Exam {
private static void div(int i, int j) throws ArithmeticException {
System.out.println(i / j);
}
public static void main(String[] args) throws Exception {
div(5, 0);
}
}
更加干净和清晰,异常提供了重要的调试信息,您需要这些信息来查找运行时错误。
我认为要捕获第二个异常,您需要做的就是嵌套try. 您可以有多个catch相同的对象try,但它们都只能捕获一个异常,它们不会级联或按顺序运行。要捕获由 a 引发的异常,catch您需要另一个try块。
private static void div(int i, int j) {
try { // NESTED HERE
try {
System.out.println(i / j);
} catch(ArithmeticException e) {
Exception ex = new Exception(e);
throw ex;
}
// THIS GOES WITH THE OUTER NESTED 'try'
} catch( Exception x ) {
System.out.println( "Caught a second exception: " + x );
}
}
但同样,你不应该这样做。允许抛出原始异常是更好的选择。
TA贡献1811条经验 获得超4个赞
我的结论:
此catch 语句处理一个异常:
try{
stuff
}catch(OnlyThisException ex){
throw ex; //CHECKED EXCEPTION
}
此catch 语句也仅处理一个异常,而另一个则未处理:
try{
stuff
}catch(OnlyThisException ex){
Exception ex = new Exception(e); //UNCHECKED! Needs catch block
throw ex; //CHECKED EXCEPTION
}
添加回答
举报