Checked Exception需要在编译时使用try,catch和finally关键字进行处理,否则编译器将标记错误

lan*_*x86 5 java exception

我对java的异常检查感到困惑

Checked Exception需要在编译时使用try,catch和finally关键字进行处理,否则编译器将标记错误

阅读更多:http://javarevisited.blogspot.com/2013/06/10-java-exception-and-error-interview-questions-answers-programming.html#ixzz3pk6OBSrj

我的问题是:我们都知道" NoSuchMethodExcepion "被检查异常,并且考虑上面的语句,这是否意味着每当我尝试调用一个方法时,我应该使用try,catch来包含调用这样的方法代码

try{
   callingMethod();
}
catch(Exception){
}
Run Code Online (Sandbox Code Playgroud)

但事实上,我不需要这样做吗?那么首先给出的陈述的真正含义是什么?谢谢你回答我的问题.

Dan*_*den 10

NoSuchMethodException是一个子类型ReflectiveOperationException,因此它只能由使用反射的代码抛出.对于像您的示例那样的常规方法调用,该方法不存在是编译时错误,因此您的代码根本不会编译.

如果使用一个版本的依赖项编译您的类,然后使用不同的版本运行它,则编译时存在的方法可能会消失.在这种情况下,您将在执行代码时获得NoSuchMethodError(这是一个Error,而不是一个Exception).