第一次遇到jvm报Error的情况,也是第一次注意到无法catch的情况。
在用itextpdf读pdf时,报错
java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable
原因是一个类文件没有找到。
java异常类有两大类:Error和Exception。这两类都有同一个接口Throwable。
出现Error错误,大多表示错误与代码编写者执行的操作无关,而表示代码运行时JVM(Java 虚拟机)出现的问题。比如上文提到的“没有到找class文件”问题。
一般来说,不建议捕获Error,因为Error错误大部分是无法恢复的。但是有时会想要记录错误到日志,这时候可以通过
try{ } catch(Throwable r){ }
来捕获所有的Error和Exception。Error和Exception都是jvm控制的,也是jvm抛出的,所以理论上所有的Error和Exception都是可以捕获的,程序也可以在捕获错误后继续运行,但是程序应该遵循Error、RuntimeException和受检异常的本意,相应处理。
参考:
http://blog.csdn.net/mccand1234/article/details/51579425
http://blog.csdn.net/jamesjxin/article/details/46606307