1

だから、これは少し極端に聞こえるかもしれませんが、私は主張しようとしています:

わかった。したがって、私のコードは、スローされている例外の種類を気にしません。99.9% の確率で、例外がスローされている場合は、何があっても同じように処理します。

さて、コードで新しい例外を作成する \ をわざわざスローする必要があるのはなぜですか? どうやら私が使用しているすべてのライブラリはすでにそれらをスローしており、同様に非常に有益です。

私のメソッドに null オブジェクトが渡されましたか? 誰が気にしても、null ポインター例外が自動的にスローされます。

なぜ新しい例外を作成してスローする必要があるのか​​ 、良い議論をすることができますか?

私が意味することを編集します:

なぜこれを気にするのですか:

public myMethod() {

try { 
    doStuff1();
}
catch(Exception e) {
throw new Exception("Error in doStuff1");
}
try { 
    doStuff2();
}
catch(Exception e) {
throw new Exception("Error in doStuff2");
}

私がこれを使用できるとき:

public myMethod() {

doStuff1();
doStuff2();

}
4

3 に答える 3

1

クライアントは詳細なエラー報告を求めています。何がうまくいかなかったのか、どこがうまくいかなかったのか。

彼らはヌルポインタ例外が何であるかを知りません。それでも、それ自体は、スタック トレースがなければ特に役に立ちません。ヌル ポインターが RetrieveReportX メソッドに渡されるのでしょうか。null かどうかを確認し、null ポインター例外を自動スローさせるのではなく、ReportXNoIdentifierException をスローします。次に、これらのカスタム例外に基づいて、どの(人間の)プロセスで何が問題になったかを正確に報告できるエラーハンドラーがどこかにあり、[スタックトレース]のNullPointerExceptionではなく、「識別子」を見ることができるため、クライアントは満足していますレポート X を取得しようとしたときに提供されませんでした。」

于 2013-09-05T19:18:19.777 に答える
0

Javaチュートリアルから- 例外の利点

  1. 利点 1: エラー処理コードを「通常の」コードから分離する
  2. 利点 2: 呼び出しスタックの上方へのエラーの伝播
  3. 利点 3: エラー タイプのグループ化と区別

答え

一般的すぎる例外ハンドラーは、プログラマーが予期せず、ハンドラーが意図していない例外をキャッチして処理することにより、コードをよりエラーが発生しやすくする可能性があります。

前述のように、例外のグループを作成して一般的な方法で例外を処理することも、特定の例外タイプを使用して例外を区別し、正確な方法で例外を処理することもできます。

于 2013-09-05T19:30:42.350 に答える
0

新しい例外を作成してスローする必要があるのはなぜですか?

場合によっては、Exception意図的に投げることが一般的であり、良い習慣です。
取った

IllegalArgumentException

メソッドが特定の範囲内の引数のみを受け入れる場合 (正の数のみなど)、無効なパラメーターをチェックして IllegalArgumentException をスローする必要があります。

例えば:

public int calculateFactorial(int n) {
  if (n < 0)
    throw new IllegalArgumentException("n must be positive");
  if (n >= 60)
    throw new IllegalArgumentException("n must be < 60");
  ...
}  
public void findFactorial(int n)
{
     try{
          calculateFactorial(n)       
      }catch(IllegalArgumentException ie){
         System.out.println(ie.getMessage());
       }
}
于 2013-09-05T19:29:12.707 に答える