在Java中,我们抛出的异常不会被默认处理程序捕获?赖特
但是在下面的程序中,当catch语句中重新抛出异常时,如果没有throws子句,则不会出现错误?? 怎么做 输出是在Java中,我们抛出的异常不会被默认处理程序捕获?赖特,java,exception-handling,Java,Exception Handling,但是在下面的程序中,当catch语句中重新抛出异常时,如果没有throws子句,则不会出现错误?? 怎么做 输出是 Caught inside demoproc. Recaught : java.lang.NullPointerException: demo 对于检查的异常只需使用抛出子句遵守以下几行: public static void main(String Args[]){ try[ try有一个括号,而不是大括号。很可能,您编译程序失败,然后重新运行旧的类文件。无法获得您想
Caught inside demoproc.
Recaught : java.lang.NullPointerException: demo
对于检查的异常只需使用
抛出
子句遵守以下几行:
public static void main(String Args[]){
try[
try
有一个括号,而不是大括号。很可能,您编译程序失败,然后重新运行旧的类文件。无法获得您想要的默认处理程序。当执行选项被
throw new NullPoinerException ("demo");
它被周围的try-catch块捕获
Catch块依次抛出异常,该异常被main中的try-Catch块捕获
希望这有帮助
注释后编辑:另外,NullPoinerException异常是未检查的异常,因此不需要将其称为抛出。因为
NullPoinerException
是RuntimeException
。它不需要抛出
子句。输出看起来就像预期的一样。你的问题是什么?@Thilo,@Luzhin:maybe-OP想说为什么它不需要在demoproc()
方法中添加throws
。[据我所知]我的意思是,如果一个方法本身不能处理异常,那么异常子类必须包含在throws子句中,但是第二次抛出异常时,没有catch语句可以在同一个方法中捕获它?NullPointerException是一个未经检查的异常,因此不需要在throws子句中提及。例如:您不需要在方法签名中声明RuntimeException(例如NullPointerException)(但如果需要,您仍然可以)。
throw new NullPoinerException ("demo");