有效的java建议我们不应该catch NullPointerException.总是对的吗?
在许多捕捉的情况下NullPointerException,捕捉身体只打电话printStackTrace().
如果我不赶上NullPointerException并打电话printStackTrace(),我怎么能检查exception发生的地方?
而且如果我抓住NullPointerException并且catch身体是空的,那么我们当时无法得到任何堆栈信息,是吗?
UPDATE
我分析了google android源码AOSP4.2.2_r1.2中捕获RuntimeException的统计信息.
有249个RuntimeException捕获,以下是catch-body的统计信息.
42%: throw it again as other Exceptions (RuntimeException: 33%, others: 8%)
32%: just return null or 0/false/true or other default values
14%: just call log or printstacktrace
5%: just comment like "// Fall through.", "// ignore, not a valid type.", "// system process dead", "// do nothing"
2%: empty body
3%: display error messages or …Run Code Online (Sandbox Code Playgroud) 我试图调用另一个JAR的主要功能.现在,这个main函数包含在try和catch块下.
但是当主调用返回"NullPointerException"时,程序只是崩溃而不是捕获它.
所以,例如
try {
somelibary.main()
}
catch (Exception e) {
System.out.println("Exception Caught");
}
Run Code Online (Sandbox Code Playgroud)
此代码从main()捕获NullPointerException.有谁知道y的原因?