誰かがスローとスローの違いを明確に述べることができますJava例外処理の例?グーグルで試しましたが、結論に達することができませんでした。
throws
句を使用して例外を宣言し、throw
キーワードを使用して例外を明示的にスローします。
構文的に見た場合、throw
の後にインスタンス変数が続き、throws
の後に例外クラス名が続きます。
キーワードthrow
はメソッド本体内で例外を呼び出すために使用され、throws
句はメソッド宣言(シグネチャ)で使用されます。
例えば
throw
throw new Exception("You have some exception")
throw new IOException("Connection failed!!")
スロー
public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
throw
を使用して複数の例外を宣言することはできません。複数の例外を宣言できます。 public void method()はIOException、SQLExceptionをスローします。
特定の例外をスローするために明示的に使用されるため、チェック例外はthrow
でのみ伝播できません。チェック例外は、throws
で伝播できます。
例外の伝播:例外は、キャッチされるまで、メソッドからメソッドへ、呼び出しスタックまで伝播します。したがって、a()がb()を呼び出し、b()がc()を呼び出し、d()を呼び出し、d()が例外をスローした場合、例外は、これらのメソッドのいずれかが例外をキャッチしない限り、dからc、bからaに伝搬します。 例外の伝搬とは?
throw
は実際のスローに使用しますException
およびthrows
は、Exception
をスローするメソッドで宣言します。
public int findMax(int[] array) throws Exception{
if(array==null)
throw new NullPointerException(...);
...
}
public void someMethod(List<Foo> someList) throws SomeException {
if (someList.isEmpty()) throw new SomeException();
}