2009-04-23 13 views
1

いくつかのクラスからなるクライアントコードを作成するとします。ユーザーは、例外がスローされるようなクラス/オブジェクトを作成することができます。この悪いデザインですか?あなたの理想的なコードは誰かが例外を起こすことが不可能なものでなければならないのでしょうか?悪いデザインですか?パッケージ内でエラーを引き起こす可能性のあるクラス

答えて

2

いいえ、デザインパターンでは例外はありません。あなたのライブラリには、強/弱の例外保証が望ましい部分/機能があるかもしれません。しかし、それは完全にライブラリに依存します。

1

いいえ、私が使用しているAPIはすべて例外をスローすることができます。このように見てください。いくつかの "悪い"データをフレームワーククラスに渡します。あなたは何が起こったでしょうか。問題がすぐにわかる例外がスローされるか、呼び出しが黙って失敗し、コードが機能しない理由を理解するのに何時間も費やしています。

1

ユーザーから提供されたオブジェクトが指定された場合に例外をスローするAPIの例は数多くあります。これは優れた設計による悪いデザインではなく、APIが入力を検証していることを示します。

私が考えた最初の例は、削除するファイルが見つからない場合に例外をスローする.NETのSystem.IO.File.Delete(string)関数でした。

0

あなたのクラスは例外をスローすることができますが、可能であれば、そのクラスへのすべての入力をチェックし、制御された例外をスローする必要があります。つまり、引数が無効であることが分かっている場合は、InvalidArgumentExceptionなどをスローします。あなたがする必要があるエラーをキャッチし、それらを扱うか、またはそれらを投げる。

関連する問題