データ検証時にExceptionを投げるのは良いことなのか悪いことなのか?
2023-08-30 10:20:49
質問
データを検証する際、以下のようにするのが癖になっています。
注意してください。 本当は各チェックに個別のブーリアンがあるわけではありません。これはあくまで例としてです。
もう一つの注意点。 テスト中のいかなるエラー処理も適切に行われています。try-catchで投げられる唯一の例外は私自身のものです。
try {
if (validCheckOne = false) {
throw new Exception("Check one is bad");
}
if (validCheckTwo = false) {
throw new Exception("Failed because of check2");
}
if(validCheckTen = false) {
throw new Exception("Yet another failure on your part: check10.");
}
} catch(Exception e) {
MessageBox.Show("Your stupid data is wrong! See for yourself: " + e.Message);
}
これは悪い習慣ですか?例外を投げることは、プログラムの実行を遅くしたり、望ましくないことなのでしょうか?
どのように解決するのですか?
個人的には、ビジネスルールの検証で例外を投げるのが好きです(ユーザー入力の検証ではそうでもないですが)。私のビジネス オブジェクトが何らかの検証結果を返した場合、呼び出し元はそれを無視することができます。お望みなら、私をカウボーイと呼んでください :)
ここでは誰もが「例外は例外的な状況のためにある」というフレーズを繰り返していますが、例外的でない状況で例外を使用することがなぜ悪いのかについては、まったく理解していません。それ以上のことが必要なのです。例外を投げることによるパフォーマンスへの打撃は、本当に悪いのでしょうか?利用可能なベンチマークはあるのでしょうか?
関連
-
[解決済み] Wekaにおけるクロスバリデーション
-
[解決済み] reactとmaterial-uiによるフォームバリデーション
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?
-
[解決済み】コンストラクターからの例外のスローイング
-
[解決済み] Angularフォームフィールドを手動で無効に設定するにはどうすればよいですか?
-
[解決済み】Exceptionを投げるとき、どの部分が高価なのですか?
-
[解決済み】Hibernate Validator(JSR303)でクロスフィールド検証を行う。)
-
[解決済み] ユーザ名/パスワードが正しくないが、正しい形式でログインしようとした場合に返すべき適切なHTTPステータスコードは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JAX-WSによるサーバーサイドのスキーマ検証
-
[解決済み] reactとmaterial-uiによるフォームバリデーション
-
[解決済み] 有効なメールアドレスの最大長を教えてください。
-
[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?
-
[解決済み] Angularフォームフィールドを手動で無効に設定するにはどうすればよいですか?
-
[解決済み】Hibernate Validator(JSR303)でクロスフィールド検証を行う。)
-
[解決済み】Javaのメールアドレス検証方法は何が一番良いですか?[クローズド]
-
[解決済み】入力に誤りがあった場合のHTTPステータスコードについて
-
[解決済み] ユーザ名/パスワードが正しくないが、正しい形式でログインしようとした場合に返すべき適切なHTTPステータスコードは何ですか?
-
[解決済み] Bashスクリプトのパラメータを検証する