除了提供有关如何从技术上解决问题的建议以外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。
让我们从澄清什么是
Error类开始。
在Java中,将引发错误和异常(它们是主要类型)。通过使用
throw关键字可以完成上述操作之一。可以扩展基础的每个类
java.lang.Throwable。
有两个从基本
Throwable类继承的类:
Exception和
Error。两者之间的差异在其文档中进行了说明:
一个 错误 是的子类 的Throwable 是 指严重的问题合理的应用程序不应该试图捕获。 大多数此类错误是异常情况。[…]
资源
Exception 类及其子类是 Throwable的 一种形式, 它 指示合理的应用程序 可能希望 捕获的条件。
资源
如上所述,由于错误和异常的来源不同,所以它们是分开的。一个
Error通常指示的一个问题,它 的应用程序不能从恢复 。因此,它们不应被抓住。
对于,也是如此
RuntimeException,但是它用于指示高层(例如方法)存在问题。而则
Error表示存在低级问题(例如,运行时)。
因此,既然您了解到您将 只捕获能够从中恢复的异常和错误,那么 问题的答案应该很清楚。
是的,赶上是完全合理的
UnsatisfiedlinkError,因为您的应用程序可以从中恢复。
我在Blog上的文章中介绍了以上内容(包括示例)和更多扩展信息。



