我的印象是 Exception 非常适合捕获所有可能的异常,因为它们中的每一个都以 Exception 作为基类。然后,在开发 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 http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)