最初は、実装の詳細を気にしたくない場合にクラスまたはライブラリが作成されますが、投げられる例外を適切に処理するためには、クラスの内部動作を知る必要があります。例外はカプセル化を中断しますか?
これはカプセル化と情報隠蔽の原則を破るものではありませんか?それとも、私はこれに完全に間違っていますか?
確かに、すべての例外を傍受する一般的なtry/catchブロックを使用できますが、それは間違いなく悪い習慣です。
例外が発生する可能性のある例外の詳細を知らなくても、どのように優れた例外処理戦略を考え出すことができますか?
例外を捕捉して続行する可能性がある場合、カスタム例外に巻き込まれずにラップされることなく、アプリケーションレイヤー間で例外が発生しないようにする必要があります。たとえば、IDictionary.Add実装の実行中にしばらく時間がかかるArgumentExceptionが呼び出し側に許可された場合、呼び出し側は(データ構造を変更せずに)呼び出しが拒否されたかどうかを知ることができませんキーがすでに存在しているか、辞書が部分的に実行され、変更されているか破損しているかどうかを示します。 – supercat