Java - NoSuchMethodError 未被异常捕获
Java - NoSuchMethodError not caught by Exception
我的印象是 Exception 非常适合捕获所有可能的异常,因为它们中的每一个都以 Exception 作为基础 class。然后在开发 Android 应用程序时,我使用了以下方法,该方法在某些自定义 ROM 中已被删除。
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Exception e){
Log.e("error","error");
}
然而这并没有捕捉到抛出的异常。后来我用NoSuchMethodError
代替了Exception
然后异常就被捕获了
有人可以解释为什么会这样吗?
Java 异常层次结构如下所示:
Throwable
| |
Error Exception
|
RuntimeException
错误旨在发出有关 JVM 内部问题和其他程序通常无法处理的异常情况的信号。因此,在您的代码中您没有捕捉到它们。尝试捕获 Throwable
而不是:
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Throwable e){
Log.e("error","error");
}
阅读this
也是个好主意
我的印象是 Exception 非常适合捕获所有可能的异常,因为它们中的每一个都以 Exception 作为基础 class。然后在开发 Android 应用程序时,我使用了以下方法,该方法在某些自定义 ROM 中已被删除。
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Exception e){
Log.e("error","error");
}
然而这并没有捕捉到抛出的异常。后来我用NoSuchMethodError
代替了Exception
然后异常就被捕获了
有人可以解释为什么会这样吗?
Java 异常层次结构如下所示:
Throwable
| |
Error Exception
|
RuntimeException
错误旨在发出有关 JVM 内部问题和其他程序通常无法处理的异常情况的信号。因此,在您的代码中您没有捕捉到它们。尝试捕获 Throwable
而不是:
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Throwable e){
Log.e("error","error");
}
阅读this
也是个好主意