Java:捕获异常时是否需要这样做?
在捕获异常时,是否需要检查错误消息是否为非空以避免空指针异常?换句话说,是否需要if(e!=null)部分?或者e总是不为空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子类的内容。因此
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用于发明“无效性”!!从空值
和空值
进行刷新更改,然后。。。当然呃<代码>空值:)