除了就如何在技术上克服问题提供建议之外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。
让我们从澄清Error
类是什么开始。
在 java 中,会抛出错误和异常(它们是主要类型)。使用throw
关键字完成上述操作之一。每个扩展基本的类java.lang.Throwable
都可以被抛出。
有两个类继承自基本Throwable
类:Exception
和Error
. 他们的文档中解释了这两者之间的区别:
Error是Throwable的子类,表示合理的应用程序不应尝试捕获的严重问题。大多数此类错误是异常情况。[...]
来源
类Exception及其子类是Throwable的一种形式,
它指示合理的应用程序可能想要
捕获的条件。
来源
如上所述,错误和异常是分开的,因为它们的来源不同。Error
通常表示应用程序无法从中恢复的问题。因此,他们不应该被抓住。
对于 a 也是如此RuntimeException
,但它用于指示高级层(例如方法)的问题。而Error
表示低级问题(例如运行时)。
因此,既然您了解您只能捕获可以从中恢复的异常和错误,那么您的问题的答案应该很清楚了。
是的,捕获 是完全合理的UnsatisfiedLinkError
,因为您的应用程序可以从中恢复。
我在我的博客上的一篇文章中介绍了上述内容(更详细并带有示例)和一些扩展信息。