一般的に、私は人々がそのような例外を捨てることに無駄な日々を過ごしてきました。
例外を除いて、いくつかの基本的なルールに従うことをお勧めします。
チェックされた例外で問題が発生することは絶対にないと確信している場合は、その例外だけをキャッチし、それを処理する必要がない理由を正確にコメントしてください。(Sleep は、実際に関心がない限り常に無視できる InterruptedException をスローしますが、正直なところ、これは私が通常無視する唯一のケースです。それでも、取得できない場合、ログに記録するコストはいくらですか?)
よくわからないが、たまに発生する可能性がある場合は、スタック トレースをキャッチしてログに記録し、それが問題を引き起こしている場合にそれを見つけられるようにします。繰り返しますが、必要な例外だけをキャッチしてください。
チェックされた例外をスローする方法が見つからない場合は、それをキャッチして、チェックされていない例外として再スローします。
例外の原因が正確にわかっている場合は、それをキャッチして正確な理由をログに記録します。この場合、何が原因であるかが明確であれば、スタック トレースは必要ありません (また、例外が発生した場合は、ログに記録しているクラスについて言及することもできます)。あなたはまだlog4jなどを使用していません。
あなたの問題は最後のカテゴリに分類されるようです.この種のキャッチでは、あなたが書いたものを決して実行せず(例外e)、チェックされていない例外がスローされた場合に備えて、常に特定の例外を実行します(不正なパラメータ、nullポインタ、 ...)
更新:ここでの主な問題は、チェック済み例外が良くないことです。それらが存在する唯一の高度に使用されている言語は Java です。それらは理論的にはきちんとしていますが、実際には、チェックされていない例外では得られないキャッチアンドハイドの動作を引き起こします。
たまには隠してもいいって言ったのに、たくさんの人がコメントしてくれました。具体的には、私が考えることができる1つのケースは次のとおりです。
try {
Thread.sleep(1000);
catch (InterruptedException e) {
// I really don't care if this sleep is interrupted!
}
この使用が問題ないと私が感じる主な理由は、この InterruptedException の使用がそもそもチェック済み例外パターンの悪用であり、例外状態を示すよりもスリープの結果を伝えているためだと思います。
次のようにすると、はるかに理にかなっています。
boolean interrupted=Thread.sleep(1000);
しかし、Java を最初に作成したとき、彼らは新しいチェック済み例外パターンを非常に誇りに思っていました (当然のことながら、これは概念的には非常に優れたものであり、実際には失敗するだけです)。
これが許容される別のケースは想像できないので、例外を無視することが有効である可能性がある単一のケースとしてこれをリストする必要があったかもしれません。