一个Exception catch不住的异常
Posted 星朝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Exception catch不住的异常相关的知识,希望对你有一定的参考价值。
现象:
Controller中的方法接收到前台ajax请求后开始执行,
当执行到某一行时程序终止,前台回调进Error方法。
后台明明catch了Exception异常,但异常并没有被捕获(不进catch)。
检查发现:
方法中引用的一个常量类,没有更新到生产环境。
因为项目处于改造中期,功能没有全部上线,而该常量类又是为新需求定义的,
结果...大家都知道了。
为什么Exception罩不住:
因为这类问题抛出的是 Error。
开发过程中,一般Exception就能罩所有问题,因为有IDE看着场子,编译错误都能及时被发现。
而Error 和 Exception平级,谁也罩不住谁,它们都继承于Throwable。
正常来说,引用一个不存在的类是不能通过编译的,但可以通过欺骗编译器来复现这个问题,
比如通过编译之后删除掉引用类的class文件。
如果用一个Throwable来catch 就会发现:
java.lang.NoClassDefFoundError: demo/DemoConstant
错误 被抓住了。
以上是关于一个Exception catch不住的异常的主要内容,如果未能解决你的问题,请参考以下文章
如何处理异常? catch Exception OR catch Throwable
(Java)问题 Catch(IOException e) 和 catch(Exception e
异常处理Exception01,try......catch{}