Java - NoSuchMethodError未被异常捕获

时间:2016-07-09 15:40:21

标签: java exception exception-handling nosuchmethoderror

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

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

然而,这并没有引发异常抛出。之后我使用了NoSuchMethodError而不是Exception,然后发现了异常。

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

1 个答案:

答案 0 :(得分:8)

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

Throwable
 |      |
Error   Exception
        |
        RuntimeException

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

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

阅读this

也是个好主意