いくつかのクラスからなるクライアントコードを作成するとします。ユーザーは、例外がスローされるようなクラス/オブジェクトを作成することができます。この悪いデザインですか?あなたの理想的なコードは誰かが例外を起こすことが不可能なものでなければならないのでしょうか?悪いデザインですか?パッケージ内でエラーを引き起こす可能性のあるクラス
1
A
答えて
2
いいえ、デザインパターンでは例外はありません。あなたのライブラリには、強/弱の例外保証が望ましい部分/機能があるかもしれません。しかし、それは完全にライブラリに依存します。
1
いいえ、私が使用しているAPIはすべて例外をスローすることができます。このように見てください。いくつかの "悪い"データをフレームワーククラスに渡します。あなたは何が起こったでしょうか。問題がすぐにわかる例外がスローされるか、呼び出しが黙って失敗し、コードが機能しない理由を理解するのに何時間も費やしています。
1
ユーザーから提供されたオブジェクトが指定された場合に例外をスローするAPIの例は数多くあります。これは優れた設計による悪いデザインではなく、APIが入力を検証していることを示します。
私が考えた最初の例は、削除するファイルが見つからない場合に例外をスローする.NETのSystem.IO.File.Delete(string)
関数でした。
0
あなたのクラスは例外をスローすることができますが、可能であれば、そのクラスへのすべての入力をチェックし、制御された例外をスローする必要があります。つまり、引数が無効であることが分かっている場合は、InvalidArgumentExceptionなどをスローします。あなたがする必要があるエラーをキャッチし、それらを扱うか、またはそれらを投げる。
関連する問題
- 1. 何がperlで印刷エラーを引き起こす可能性がありますか?
- 2. コンテキストスイッチがスタックオーバーフローを引き起こす可能性がありますか?
- 3. データキャッシングが干渉を引き起こす可能性がありますか?
- 4. この悪いデザインですか?
- 5. PictureBoxを更新するときに、何がArgumentExceptionを引き起こす可能性がありますか?
- 6. どのCSSプロパティがInternet Explorerで問題を引き起こす可能性がありますか?
- 7. ローカル変数がARCでメモリリークを引き起こす可能性がありますか?
- 8. これはJavaScriptのメモリリークを引き起こす可能性がありますか?
- 9. このコードは潜在的なメモリリークを引き起こす可能性がありますか?
- 10. .htaccessがループを起こす可能性がありますか?
- 11. N関数は既存のクエリに問題を引き起こす可能性がありますか?
- 12. CompilerMojo#execute()がリンケージエラー(java.lang.NoSuchMethodError)を引き起こし、古くなっている可能性があります
- 13. Remotingがクラス内にある可能性があります
- 14. 到達可能性クラス・エラー
- 15. これはtomcat 7.0.xでメモリリークを引き起こす可能性が非常に高い
- 16. cakePHP:アクション/関数のx_withがエラーを引き起こします...繰り返し可能ですか?コントローラで
- 17. アンドロイド:targetSdkVersion = 8は問題を引き起こす可能性がありますか?
- 18. デリゲートがメモリリークを引き起こす可能性がありますか? GC.TotalMemory(真)はそう
- 19. Dropboxとgitは、競合を引き起こす可能性がありますか?
- 20. Webアプリケーションのプリロード/キャッシュが悪い可能性があります
- 21. /jaディレクトリ内のウェブマスターツールの404エラーを引き起こすjQuery
- 22. JSLintはこの機能で厳しい違反エラーを引き起こすのはなぜですか?
- 23. Kohanaでは、404エラーを引き起こすことができますか?
- 24. DataContractJsonSerializerの静的インスタンス - 良いデザインか悪いデザインですか?
- 25. JSorterエラーを引き起こすTablesorterプラグイン
- 26. クッキーが500内部エラーを引き起こす
- 27. tomcat7 - jdbcデータソース - これはメモリリークを引き起こす可能性が非常に高い
- 28. 私は次の出力で死ぬことを引き起こす可能性がありますサーバーを持っている
- 29. OnPostUpdateのSession.Evictが「セッションへの非スレッドセーフなアクセスの可能性がある」という例外を引き起こすのはなぜですか?
- 30. レスポンスネイティブのステータスバーを引き出すことは可能ですか?