Java - NoSuchMethodError未被异常捕获

Ano*_*ous 4 java exception-handling exception nosuchmethoderror

我认为Exception有助于捕获所有可能的异常,因为每个异常都将Exception作为基类.然后在开发Android应用程序时,我使用了以下方法,这些方法在一些自定义ROM中已被删除.

boolean result = false;
try{
   result =  Settings.canDrawOverlays(context);
}
catch(Exception e){
    Log.e("error","error");
}
Run Code Online (Sandbox Code Playgroud)

然而,这并没有抓住异常抛出.后来我用NoSuchMethodError而不是Exception然后抓住了异常.

有人可以解释为什么会这样吗?

Pav*_* S. 10

Java异常层次结构如下所示:

Throwable
 |      |
Error   Exception
        |
        RuntimeException
Run Code Online (Sandbox Code Playgroud)

错误旨在用于发出有关JVM内部问题和其他异常情况的信号,这些情况通常无法以合理的方式处理.所以,在你的代码中,你没有抓住它们.试着抓住Throwable:

boolean result = false;
try{
   result =  Settings.canDrawOverlays(context);
}
catch(Throwable e){
    Log.e("error","error");
}
Run Code Online (Sandbox Code Playgroud)

这个也是个好主意