1、try catch Exception->try 块里边的代码有异常,却没有捕捉到,导致看起来一切好好的,就是不知道哪里异常了,什么异常。
2、原来有些异常是不能被 Exception 捕捉的,可以在外层即调用异常代码的地方用 try catch Throwable 捕捉异常。
3、看下效果,是 NoClassDefFoundError,缺包了呢,引入就好啦T_T
总结:
大概查了一下,原来 Exception 和 Error 都是 Throwable 的子类。
虽然问题解决了,但还不是很了解异常的原理,先记录着,后续弄清楚再续...
-------------------------------------------------------华丽的分割线--------------------------------------------------
后续来了,梳理了一波异常放这篇了->Java异常(漂亮简洁的思维导图)
虽然在 catch 子句中使用 Throwable ,它不仅会捕获所有异常,也将捕获所有的错误。当 JVM 抛出错误,指出不应该由应用程序处理的严重问题,比如 OutOfMemoryError 、StackOverflowError,两者都是由应用程序控制之外的情况引起的,无法处理,这种情况不适合捕获。那么什么情况适合使用 Throwable 呢?
1、如本栗子,用来调试的时候,即自己确定捕获后能处理或不用处理的时候。
2、阿里巴巴Java开发手册:在调用RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用Throwable类来进行拦截。 说明:通过反射机制来调用方法,如果找不到方法,抛出NoSuchMethodException。什么情况会抛出NoSuchMethodError呢?二方包在类冲突时,仲裁机制可能导致引入非预期的版本使类的方法签名不匹配,或者在字节码修改框架(比如:ASM)动态创建或修改类时,修改了相应的方法签名。这些情况,即使代码编译期是正确的,但在代码运行期时,会抛出NoSuchMethodError。