Java:捕获异常时这是必要的吗?

时间:2012-10-12 22:06:01

标签: java exception

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

 try {
     ...

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

  }

4 个答案:

答案 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) { }

绝对没有必要。