3

e在捕获异常时,是否有必要检查错误消息是否为空以避免空指针异常?换句话说,是否需要 if (e!=null) 部分?或者 e 总是不为空?

 try {
     ...

  } catch(Exception e) {
     if (e != null) {
        System.err.println("Error: " + e.getMessage());
     }

  }
4

4 回答 4

9

任何被抛出的东西都必须是 的子类Throwable,而你的 catch 只会捕获属于 的子类的东西Exception。因此,您既不能 throw 也不能 catch null,因此不需要检查无效性。如果您使用throw null或抛出一个包含 null 的变量,那么它将抛出一个NullPointerException.

于 2012-10-12T22:08:57.350 回答
3

异常永远不会为空。但是,异常的某些属性可能为空。

于 2012-10-12T22:09:02.280 回答
3

e永远不会为空。即使您throw null(这是完全合法的)java 会将其转换为此处NullPointerException规范中详述的

于 2012-10-12T22:13:14.923 回答
1

被捕获的异常永远不会null像已经被捕获的那样。所以检查:

if (e != null) { }

绝对没有必要。

于 2012-10-12T22:12:10.410 回答