如果我加入我的代码,这个try/catch语句:约try/catch语句简单的问题
try {
...
method1();
} catch (Exception e) {
call_method();
}
我在援引“call_method()
”对任何类型的例外,在任何级别,如java.lang.NullPointerException
内method1()
。 。 对 ?
感谢
如果我加入我的代码,这个try/catch语句:约try/catch语句简单的问题
try {
...
method1();
} catch (Exception e) {
call_method();
}
我在援引“call_method()
”对任何类型的例外,在任何级别,如java.lang.NullPointerException
内method1()
。 。 对 ?
感谢
我在援引 “call_method()” 中的任何 类型的例外,在任何级别,例如 作为显示java.lang.NullPointerException 内部方法1()..对不对?
是........
短而甜:-)! +1 – 2011-04-08 13:50:10
这将是一个稳定:是的! :-D
是的,这是正确的。但是,catch块不会触发错误,例如OutOfMemoryError
。这通常是你想要的,因为错误应该表示应用程序无法从中恢复的基本问题。
由于您正在捕获通用异常,因此每次抛出异常时都会调用call_method()
。
你可以在这里看到:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Exception.html
这个例外是例外,在一切最终继承的顶层类。
然而,作为一个经验法则,您通常不希望捕获Exception,而是希望捕获与您的try,catch块有关的特定错误。
是的,这将捕获任何延伸Exception
的东西。特别要注意的是,这包括RuntimeException
及其许多子类(如您提到的NullPointerException
)。
它不会捕获其他Throwable
对象,即Error
及其许多子类。
您应该小心,不要编写过度隐藏的重要问题的异常处理程序。 (在这个例子中是否是这种情况,我不能说)。
是 - 对于从异常继承的任何东西。尽管一般情况下,除非该方法正在处理该异常,否则通常不会被认为是“良好的形式”(但我不试图假定某人的意图)。
你可能想在Throwable的看起来还有:这里是一个很好的讨论观点: When should Throwable be used instead of new Exception?
对于try块内抛出的任何异常,你会被调用call_method()
。
这是因为您试图捕获通用Exception
对象而不是某些特定对象,如NullPointerException
。
如果你尝试这样的事情,
try {
// ....
method1();
}
catch(NullPointerException e) {
// ....
call_method();
}
那么只有当你有一个NullPointerException
try块内,你会赶上抓住它&您call_method()
将被执行。
但有一点需要注意,如果在method1中抛出异常,并且在该方法中或在异常抛出到初始调用之前进行处理,它将无法到达call_method()。发生在我的一个朋友,所以我想我应该提到它。 – Shaded 2011-04-08 13:40:05