私がシステムのプログラミングと開発に費やしてきた年に、問題のパターンが有用であるとわかったのは2つの状況だけです(どちらの場合も、抑制にはスローされた例外のロギングも含まnull
れていたため、プレーンキャッチとリターンを良いプラクティスとは考えていません)。
2つの状況は次のとおりです。
1.例外が例外状態と見なされなかったとき
これは、スローする可能性のあるデータに対して操作を行うときです。スローする可能性があることはわかっていますが、処理されたデータは必要ないので、アプリケーションを実行し続けます。あなたがそれらを受け取った場合、それは良いです、そうでない場合、それも良いです。
クラスのいくつかのオプション属性が頭に浮かぶかもしれません。
2.アプリケーションで既に使用されているインターフェイスを使用して、ライブラリの新しい(より良い、より速い?)実装を提供する場合
ある種の古いライブラリを使用するアプリケーションがあり、例外をスローしなかったがnull
エラーで返されたと想像してください。したがって、このライブラリ用のアダプタを作成し、ライブラリの元のAPIをほとんどコピーし、アプリケーションでこの新しい(まだ非スロー)インターフェイスを使用し、null
チェックを自分で処理しています。
新しいバージョンのライブラリ、または同じ機能を提供する完全に異なるライブラリが提供されnull
ます。s を返す代わりに例外をスローし、それを使用する必要があります。
メインアプリケーションに例外を漏らしたくないので、作成したアダプタに例外を抑制して記録し、この新しい依存関係をラップします。
最初のケースは問題ではなく、コードの望ましい動作です。ただし、2番目の状況では、null
ライブラリアダプターの戻り値が実際にエラーを意味する場合は、APIをリファクタリングして例外をスローし、チェックする代わりにキャッチするのnull
が良い方法です(そして、通常、コードに関してはそうです)。
私は個人的に例外抑制を最初のケースにのみ使用しています。null
sの代わりに例外を使用してアプリケーションの残りの部分を機能させるための予算がなかった2番目の場合にのみ使用しました。