我的印象是,Exception对于捕获所有可能的异常是很好的,因为它们中的每一个都有Exception作为基类。然后,在开发Android应用程序时,我使用了以下方法,该方法在一些自定义ROM中已被删除。
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Exception e){
Log.e("error","error");
}
但是,这并没有捕获抛出的异常。后来我用NoSuchMethodError
代替了Exception
,然后异常就被捕获了。
有人能解释一下为什么会发生这种情况吗?
发布于 2016-07-09 23:43:10
Java异常层次结构如下所示:
Throwable
| |
Error Exception
|
RuntimeException
错误的目的是发出有关JVM内部问题和其他异常情况的信号,这些问题通常无法由程序处理。所以,在你的代码中,你没有捕捉到它们。相反,尝试捕获Throwable
:
boolean result = false;
try{
result = Settings.canDrawOverlays(context);
}
catch(Throwable e){
Log.e("error","error");
}
此外,阅读this也是一个好主意
https://stackoverflow.com/questions/38283476
复制相似问题