Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么捕获NPE异常后不打印捕获异常_Java - Fatal编程技术网

Java 为什么捕获NPE异常后不打印捕获异常

Java 为什么捕获NPE异常后不打印捕获异常,java,Java,上述代码只打印输出中的“NPE异常”,而不打印“NPE异常”。有谁能解释一下,因为NPE是RunTimeException的一种类型,我们知道RunTimeException是Exception类的一个子类型?任何可丢弃的都只捕获一次,可以处理异常的第一个catch块,因为您只能捕获一次您的异常,或者如果您想转到下一个catch块,请重新捕获您的异常并再次捕获它。从中,您可以捕捉到如下内容: try { String x = null; int y = x.length();

上述代码只打印输出中的“NPE异常”,而不打印“NPE异常”。有谁能解释一下,因为NPE是RunTimeException的一种类型,我们知道RunTimeException是Exception类的一个子类型?

任何可丢弃的
都只捕获一次,可以处理异常的第一个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 ");