Java 关于try/catch语句的简单问题

Java 关于try/catch语句的简单问题,java,exception,try-catch,nullpointerexception,Java,Exception,Try Catch,Nullpointerexception,如果在代码中添加此try/catch语句: try { ... method1(); } catch (Exception e) { call_method(); } 我是否为任何类型的异常调用了“call_method()”,在method1()内部的任何级别,例如java.lang.NullPointerException。。对吧? 谢谢 我是否调用了任何 任何级别的异常类型,如 作为java.lang.NullPointerException 内部方法1()。。对吧

如果在代码中添加此try/catch语句:

try {
   ...
   method1();

} catch (Exception e) {
   call_method();

}
我是否为任何类型的异常调用了“
call_method()
”,在
method1()
内部的任何级别,例如
java.lang.NullPointerException
。。对吧?

谢谢

我是否调用了任何 任何级别的异常类型,如 作为java.lang.NullPointerException 内部方法1()。。对吧?

是的

我是否调用了任何 任何级别的异常类型,如 作为java.lang.NullPointerException 内部方法1()。。对吧?


是的……。

那将是一个稳定的回答:是的!:-这将是一个稳定的回答:是的-是的,没错。但是,catch块不会触发错误,例如
OutOfMemoryError
。这通常是您想要的,因为错误被认为是应用程序无法恢复的基本问题的信号。

是的,这是正确的。但是,catch块不会触发错误,例如
OutOfMemoryError
。这通常是您想要的,因为错误被认为是应用程序无法恢复的基本问题的信号。

由于您正在捕获一般异常,因此每次抛出异常时,您都将调用
call\u method()

你可以在这里看到:

该异常是异常的顶级类,在该类中所有内容最终都继承自


但是,根据经验,您通常不希望捕获异常,而是希望捕获与try,catch块有关的特定错误。

由于您捕获的是一般异常,因此每次抛出异常时都将调用
call\u method()

你可以在这里看到:

该异常是异常的顶级类,在该类中所有内容最终都继承自


但是,根据经验,您通常不希望捕获异常,而是希望捕获与try,catch块相关的特定错误。

是的,这将捕获扩展了
异常的任何内容。请特别注意,这包括
RuntimeException
及其许多子类(如您提到的
NullPointerException

它不会捕获其他
可丢弃的
对象,即
错误
及其许多子类


您应该小心,不要编写过于宽泛的异常处理程序,以免最终隐藏重要问题。(在本例中是否是这样,我不能说。)

是的,这将捕获扩展
异常的任何内容。请特别注意,这包括
RuntimeException
及其许多子类(如您提到的
NullPointerException

它不会捕获其他
可丢弃的
对象,即
错误
及其许多子类


您应该小心,不要编写过于宽泛的异常处理程序,以免最终隐藏重要问题。(在本例中是否如此,我不能说。)

是-对于从Exception继承的任何内容。虽然一般来说,除非该方法正在做一些事情来处理该异常,否则它通常不被认为是“好的形式”(但我不尝试假设一个人的意图)

您可能还想看看Throwable:下面是一个很好的讨论:
是-对于从异常继承的任何内容。虽然一般来说,除非该方法正在做一些事情来处理该异常,否则它通常不被认为是“好的形式”(但我不尝试假设一个人的意图)

您可能还想看看Throwable:下面是一个很好的讨论:

对于try块中抛出的任何异常,您将调用
调用方法()

这是因为您正试图捕获泛型
异常
对象,而不是某些特定对象,例如
NullPointerException

如果你尝试这样的事情

try { 
  // ....
  method1();
 }
catch(NullPointerException e) {
  // ....
  call_method();
 }  

然后,只有当try块中有一个
NullPointerException
时,您的catch才会捕获它&您的
call\u方法()
将被执行。

对于try块中抛出的任何异常,您将调用
call\u方法()

这是因为您正试图捕获泛型
异常
对象,而不是某些特定对象,例如
NullPointerException

如果你尝试这样的事情

try { 
  // ....
  method1();
 }
catch(NullPointerException e) {
  // ....
  call_method();
 }  

然后,只有当try块中有
NullPointerException
时,您的catch才会捕获它&您的
call\u方法()
将被执行。

但需要注意的是。。。如果在method1中抛出异常,并在该方法中或在将异常抛出到初始调用之前的某个地方处理该异常,则该异常将不会到达call_method()。发生在我的一个朋友身上,所以我想我应该提一下。不过有一件事需要注意。。。如果在method1中抛出异常,并在该方法中或在将异常抛出到初始调用之前的某个地方处理该异常,则该异常将不会到达call_method()。发生在我的一个朋友身上,所以我想我应该提一下。