背景
私はJavaのチョップを磨いて、Oracle Java 8試験を受験する準備をしています。これはどの例外を投げるべきですか?
public static void main(String[] args) {
try {
String val1 = args[0];
String val2 = args[1];
...
} catch (Exception e) { // <-- Here is where it gets tricky
...
}
}
私は悪いデータを渡すとき、私は2を取得しています、それはException
をキャッチするために悪いフォームの実現、しかし:私は、2つの値が引数として渡されますが想定している。このような基本的なものを、持っています私が汎用オブジェクトException
を使って何をするかによって異なる特定の例外が発生するので、ここでどのオブジェクトを捕捉する必要があるのか分かりません。
セットアップ
私はこれを行う場合:
} catch (Exception e) {
System.err.println(e.toString());
}
を私はargs
与えられた意味をなすjava.lang.ArrayIndexOutOfBoundsException
は、配列で取得します。
私が代わりにこれを行う場合は、:
} catch (Exception e) {
System.err.println(e.getCause().getMessage());
}
を私もしませんがないargs
のStringオブジェクトへの参照があると考えると、理にかなってjava.lang.NullPointerException
、
を取得もう意味をなさないのですが、
はでなければなりません。例外がここにスローされなければならない
質問
?
十分な引数を渡さない可能性があるので、ArrayIndexOutOfBoundsExceptionがスローされる可能性があります。 – ZeldaZach
e.getCause()がnullであるため、おそらく新しいNullPointerExceptionが発生します。 – khelwood
@Chris no、 'Integer.parseInt()'の部分を忘れてしまいました。ただし、プログラムに引数を与えない場合は例外です。私が本当に求めていることを示すためにそれを編集します。 –