-4

NullPointerExceptionロギング経由でキャッチしようとする次のコードは機能しません。誰かがこれを見て、私を導いてくれませんか。

try {
    if (results1 != 00.00) {
        throw new Exception("Data must be added");
    }
}
catch (Exception e) {  
    log.error("You have an error", e);
}  

results1 は計算に使用されるため、ユーザーは結果 1 の値を入力する必要があります。Results1 はパーセンテージであるため double です。機能させるために必要な場合は、int に変更します。また、ユーザーが誤って % 記号を追加したかどうかを、try and catch 手法で確認したいと考えています。テスト目的で、ロガーが NumberFormatException をキャッチするようにします。

更新: フィードバックに感謝します (どういうわけかそれを見落としていました)。それでもうまくいきません。これが問題かもしれないと思います:

          (results1 != 00.00)

double の入力が空かどうかを確認するには、これが最善の方法ですか。また、文字列が追加されているかどうかを確認するにはどうすればよいですか?

4

5 に答える 5

2

NullPointerExeptionのインスタンスではないため、キャッチされませんでしたNumberFormatException

これら2つの共通の祖先をキャッチする必要があります。ドキュメントはNumberFormatExceptionおよび NullPointerExceptionです。しかし、私の観点からは、それIllegalArgumentExceptionを正しくスローして処理する方が良いです。

于 2013-04-04T06:19:15.073 に答える
2

NullPointerExceptionではありませんinstanceof NumberFormatException。正しい例外をキャッチする必要があります。

于 2013-04-04T06:19:31.733 に答える
0

You should catch NullPointerException instead of NumberFormatException.

于 2013-04-04T06:36:12.180 に答える
0

コードを次のように変更すると、動作するはずです。

try {
   if (results1 != 00.00 ) { 
    throw new Exception("Data must be added"); 
   }
} catch (Exception e)   {  
   log.error("You have an error", e);
}  
于 2013-04-04T06:21:44.490 に答える
0

null ポインター例外を別の catch ブロックとしてキャッチする必要があります。Null ポインタ例外は Numberformat 例外のインスタンスではありません

于 2013-04-04T06:22:35.900 に答える