Java 为什么捕获NPE异常后不打印捕获异常
上述代码只打印输出中的“NPE异常”,而不打印“NPE异常”。有谁能解释一下,因为NPE是RunTimeException的一种类型,我们知道RunTimeException是Exception类的一个子类型?任何可丢弃的Java 为什么捕获NPE异常后不打印捕获异常,java,Java,上述代码只打印输出中的“NPE异常”,而不打印“NPE异常”。有谁能解释一下,因为NPE是RunTimeException的一种类型,我们知道RunTimeException是Exception类的一个子类型?任何可丢弃的都只捕获一次,可以处理异常的第一个catch块,因为您只能捕获一次您的异常,或者如果您想转到下一个catch块,请重新捕获您的异常并再次捕获它。从中,您可以捕捉到如下内容: try { String x = null; int y = x.length();
都只捕获一次,可以处理异常的第一个catch块,因为您只能捕获一次您的异常,或者如果您想转到下一个catch块,请重新捕获您的异常并再次捕获它。从中,您可以捕捉到如下内容:
try {
String x = null;
int y = x.length();
} catch (NullPointerException npe) {
System.out.println("NPE Exception ");
} catch (Exception e) {
System.out.println("Exception ");
}
多捕获块为您提供了一种更干净的处理异常的方法,可防止跨多个捕获块的代码重复。但是,请注意,相互对等的异常只能放在多捕获块中 因为触发了捕获(NullPointerException npe)
。把catch
想象成带有break
s的case
。因此,标题中的“…NPE异常”是多余的,应该是“NPE”或更好的“NullPointerException”。您可以重新抛出异常并多次捕获它;)@库马拉比纳夫:-选得好!Thanks@KumarAbhinav:-我刚刚给出了一个添加的选项,给出这些选项也不错。Thanks@KumarAbhinav-谢谢
catch( NullPointerException | SQLException ex ) {
System.out.println("NPE Exception ");