Java:捕获异常时是否需要这样做?

Java:捕获异常时是否需要这样做?,java,exception,Java,Exception,在捕获异常时,是否需要检查错误消息是否为非空以避免空指针异常?换句话说,是否需要if(e!=null)部分?或者e总是不为空 try { ... } catch(Exception e) { if (e != null) { System.err.println("Error: " + e.getMessage()); } } 抛出的任何内容都必须是Throwable的子类,您的catch将只捕获属于Exception子类的内容。因此

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

 try {
     ...

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

  }

抛出的任何内容都必须是
Throwable
的子类,您的catch将只捕获属于
Exception
子类的内容。因此,您既不能抛出也不能捕获
null
,因此不需要检查null。如果使用
抛出null
或抛出包含null的变量,则它将抛出
NullPointerException
异常将永远不会为null。但是,异常的某些属性可能为null。

捕获的异常将永远不会为null,因为它已被捕获。因此,检查:

if (e != null) { }

是绝对不必要的。

e
将永远不会为空。即使您
抛出null
(这是完全合法的),java也会将其转换为
NullPointerException
,如规范
e
中所述,e不能为null,但
e.getMessage()
可以为null。您不必为e添加null检查,但从超类Throwable继承的方法仍然可以返回null。例如,getMessage->返回null。这在NullPointerException期间发生+1事实上,不用说catch本身在这种情况下应该抛出一个异常……它必须是一个Throwable,但不一定必须是exception的子类。但在这种情况下是正确的,因为它试图捕获异常+1.无论如何,+1用于发明“无效性”!!从
空值
空值
进行刷新更改,然后。。。当然呃<代码>空值:)