【发布时间】:2012-11-20 16:51:11
【问题描述】:
try-catch 块的这些用法之间有什么区别以及何时应该使用每个块?
try {
doSomething1();
} catch(Exception e1){
exception_handle1();
}
try {
doSomething2();
} catch(Exception e2){
exception_handle2();
}
try {
doSomething1();
doSomething2();
} catch(Exception e1) {
exception_handle1();
} catch(Exception e2) {
exception_handle2();
}
try {
doSomething1();
try {
doSomething2();
} catch(Exception e2){
exception_handle2();
}
} catch(Exception e1){
exception_handle1();
}
【问题讨论】:
-
令人惊讶的是,所有这些都是语法错误。
-
第一个与第二个非常相似,如果您正在寻找一般的异常。除非您使异常更具体(例如 IOException、MathException 等),否则它们几乎相同。
-
这是什么问题!在 Eclipse 中尝试一下!
-
第三种情况与第二种情况略有不同 - 如果您考虑 Exception 的子类(而不是 java.lang.Exception)。实际上,在第二种情况下,第一个 catch 将捕获所有异常,并且永远不会调用第二个处理程序。
标签: java try-catch code-standards