例外メカニズムは、応答値と組み合わせてステータス インジケーターを取得する唯一の方法であるため、価値があります。さらに、ステータスインジケーターも標準化されています。エラーが発生した場合は、例外が発生します。そうすれば、エラー インジケーターを自分で考える必要がなくなります。論争は例外ではなく、チェックされた例外 (たとえば、キャッチまたは宣言する必要があるもの) に関するものです。
個人的には、例外が本当に価値のある例の 1 つを選んだと思います。ユーザーが間違った値を入力することはよくある問題であり、通常は正しい値についてユーザーに連絡する必要があります。ユーザーに尋ねた場合、通常、デフォルト値に戻すことはありません。ユーザーに自分の入力が重要であるという印象を与えます。
例外を処理したくない場合は、RuntimeException (または派生クラス) でラップするだけで、コード内の例外を無視できます (例外が発生した場合はアプリケーションを強制終了します。場合によっては問題ありません)。
NumberFormat の例外を処理する方法の例: Web アプリの構成データ:
loadCertainProperty(String propVal) {
try
{
val = Integer.parseInt(userdata);
return val;
}
catch (NumberFormatException nfe)
{ // RuntimeException need not be declared
throw new RuntimeException("Property certainProperty in your configuration is expected to be " +
" an integer, but was '" + propVal + "'. Please correct your " +
"configuration and start again");
// After starting an enterprise application the sysadmin should always check availability
// and can now correct the property value
}
}
GUI で:
public int askValue() {
// TODO add opt-out button; see Swing docs for standard dialog handling
boolean valueOk = false;
while(!valueOk) {
try {
String val = dialog("Please enter integer value for FOO");
val = Integer.parseInt(userdata);
return val;
} catch (NumberFormatException nfe) {
// Ignoring this; I don't care how many typo's the customer makes
}
}
}
Web フォーム: 有用なエラー メッセージと修正の機会を含むフォームをユーザーに返します。ほとんどのフレームワークは、標準化された検証方法を提供します。