eHhile捕获异常是否有必要检查错误消息是否为空以避免空指针异常?换句话说,是否需要if(e!= null)部分?或者e总是不为空?
try {
...
} catch(Exception e) {
if (e != null) {
System.err.println("Error: " + e.getMessage());
}
}
答案 0 :(得分:9)
任何被抛出的东西必须是Throwable
的子类,并且你的catch只会捕获Exception
的子类。因此,您既不能抛出也不能捕获null
,因此无需检查纯粹性。如果您使用throw null
或抛出一个包含null的变量,那么它将抛出一个NullPointerException
。
答案 1 :(得分:3)
异常永远不会为null。但是,异常的某些属性可能为null。
答案 2 :(得分:3)
e
永远不会为空。即使您throw null
(完全合法),java也会将其转换为NullPointerException
,详见规范here
答案 3 :(得分:1)
捕获的异常永远不会是null
,因为它已被捕获。所以检查:
if (e != null) { }
绝对没有必要。