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