Android NoteX Q11:trycatch(Exception e)能捕获所有异常么

当然不能,譬如:加载一个不存在的库。

System.loadLibrary("c++_shared");

还是会报错。

java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so” not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
at java.lang.System.loadLibrary(System.java:1664)

那如何捕获这类错误呢?
使用trycatch(Throwable e)吧。

复习下Throwable、Exception、Error的区别。
后两者是前者的子类。
Exception:常用作可以通过程序手段来处理的异常,一般发生在运行时,是可以被处理的。
Error:常指程序严重错误,有些编译阶段就会发现该异常,譬如NoClassDefFoundError、Virtual MachineError等,也有些是运行时发生:OutOfMemoryError。

所以这类就很清楚了,"library * not found"是属于严重错误,没有找到该库,所以是不属于Exception范围的。既然是严重错误,那还是不要trycacth了,解决了为好。

猜你喜欢

转载自blog.csdn.net/ganshenml/article/details/118344446