問題を技術的に克服する方法についてアドバイスする以外に、そもそもなぜそれが「悪い習慣」と見なされるのかを説明したいと思います。
Error
クラスとは何かを明確にすることから始めましょう。
Java では、エラーと例外 (主なタイプ) がスローされます。上記のいずれかをスローするには、throw
キーワードを使用します。基本を拡張するすべてのクラスをjava.lang.Throwable
スローできます。
基本クラスから継承する 2 つのクラスがありますThrowable
:Exception
とError
. これら 2 つの違いは、ドキュメントで説明されています。
Errorは、 Throwableのサブクラスであり、合理的なアプリケーションがキャッチしようとすべきではない重大な問題を示します。このようなエラーのほとんどは異常な状態です。[...]
ソース
クラスExceptionとそのサブクラスは、適切なアプリケーションが
キャッチする可能性がある条件
を示すThrowableの形式です。
ソース
上で説明したように、エラーと例外は発生源が異なるため分離されています。はError
通常、アプリケーションが回復できない問題を示します。したがって、彼らを捕まえてはいけません。
同じことが a にも当てはまりますがRuntimeException
、高レベルのレイヤー (メソッドなど) の問題を示すために使用されます。Error
は低レベルの問題 (ランタイムなど) を示します。
したがって、回復できる例外とエラーのみをキャッチする必要があることを理解したので、質問への答えは明らかです。
UnsatisfiedLinkError
はい、アプリケーションはそれから回復できるため、をキャッチすることは完全に合理的です。
上記の内容 (詳細と例を示します) といくつかの拡張情報については、私のブログ の記事で説明しました。