3

例外をキャッチするためにtrycatchブロックを使用しています。コンソールは、null値をスローしていることを示しています。しかし、それはキャッチブロックには行きません。

try {
        System.out.println("Exception here "+SomeObject.getValue());
    } catch (NullPointerException e) {
        // TODO: handle exception
        SomeObject so = new SomeObject();
    }
    SomeObject.setValue(); 
}

これはどのように処理できますか。メソッドレベルも使用できますthrows NullPointerExceptionか?

4

3 に答える 3

3

それは確かにキャッチブロックの中に入るでしょう。その行に別の潜在的なNullPointerExceptionがあります(あなたが言おうとしていると仮定して)

so.setValue(); 

RuntimeExceptionをスローすることはお勧めできません。try / catchではなく、単純な条件チェックを使用して、コードでNullPointerExceptionを処理することをお勧めします。

于 2011-12-23T06:48:43.680 に答える
0

NullPointerExcetpionをキャッチするのではなく、UnChecked Exceptionsをキャッチすることはお勧めできません。ただし、If条件でnull値を簡単にチェックできます。

if(SomeObject.getValue()!=null)
System.out.println(SomeObject.getValue());
于 2011-12-23T06:56:32.590 に答える
0

別のtryブロックをcatch内に置くことができます

try {
    doSomething();
} catch (IOException) {
         try {
                  doSomething();
         } catch (IOException e) {
                 throw new ApplicationException("Failed twice at doSomething" +
                 e.toString());
         }          
} catch (Exception e) {
}
于 2011-12-23T07:10:30.493 に答える