[解決済み] 例外を発生させるタイミングは?
質問
私のアプリケーションが想定していない条件ごとに例外が作成されています。
UserNameNotValidException
,
PasswordNotCorrectException
などです。
しかし、それらの条件に対して例外を作るべきではないと言われました。私のUMLでは、それらはメインフローに対する例外であり、なぜ例外であってはならないのでしょうか?
例外を作成するためのガイダンスやベストプラクティスがあれば教えてください。
どのように解決するのですか?
私の個人的な指針は、現在のコードブロックの基本的な前提が誤りであることが判明した場合に例外がスローされることです。
例1:任意のクラスを調べ、そのクラスがList<>を継承していれば真を返すとされる関数があるとする。この関数は、「このオブジェクトはListの子孫ですか?
例2:List<>を調べて、長さが50以上なら真を、それ以下なら偽を返す別の関数があるとします。この関数は、「このリストは50個以上のアイテムを持っているか」という質問をします。もし私がNULLを渡したら、その仮定は偽りになります。その場合、もし関数が どちらか 真 または を false にした場合、それ自身のルールを破ることになります。この関数は 何でも で、その質問に正しく答えたと主張します。そのため、例外を投げます。
これは "ロードされた質問" 論理的誤謬。すべての関数は問いを投げかけます。もし与えられた入力がその問いを誤りにしているならば、例外を投げます。この線引きはvoidを返す関数では難しいのですが、要するに、入力に対する関数の仮定が破られた場合、普通に返すのではなく、例外を投げるべきだということです。
この方程式の反対側は、もし関数が頻繁に例外をスローするようであれば、おそらくその仮定を改良する必要があるということです。
関連
-
よくある例外 No converter for XXX with preset Content-Type 'application/octet-stream'
-
接続待ちでリクエストがキャンセルされた(ヘッダ待ちでClient.Timeoutを超えた)
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Pythonで例外を表示するには?
-
[解決済み] Pythonの関数が例外を投げるかどうかをテストするにはどうすればよいですか?
-
[解決済み] Javaにおけるチェック済み例外とチェックされていない例外の理解
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】プログラムを停止/終了させることなく、完全な例外トレースバックをキャッチして表示する方法は?
-
[解決済み】Pythonでtry-except-elseを使用するのは良い習慣ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
よくある例外 No converter for XXX with preset Content-Type 'application/octet-stream'
-
接続待ちでリクエストがキャンセルされた(ヘッダ待ちでClient.Timeoutを超えた)
-
com.android.tools.build:gradle:3.2.1 が見つからなかったので、flutter プロジェクトを開始します。
-
[解決済み] java.lang.OutOfMemoryError "に対処する。PermGen space "エラーに対処する
-
[解決済み] Pythonで変数が定義されているかどうかを判定する【重複】。
-
[解決済み] 例外を発生させるタイミングは?
-
[解決済み] なぜすべてのブロックを "try"-"catch "で包んではいけないのですか?
-
Serious: Exception loading sessions from persistent storage.
-
[解決済み] nullを返すのは設計ミス?[クローズド]