web-dev-qa-db-ja.com

Javaのスローとスローの違いは?

誰かがスローとスローの違いを明確に述べることができますJava例外処理の例?グーグルで試しましたが、結論に達することができませんでした。

8
user3527594
  1. throws句を使用して例外を宣言し、throwキーワードを使用して例外を明示的にスローします。

  2. 構文的に見た場合、throwの後にインスタンス変数が続き、throwsの後に例外クラス名が続きます。

  3. キーワードthrowはメソッド本体内で例外を呼び出すために使用され、throws句はメソッド宣言(シグネチャ)で使用されます。

例えば

throw

throw new Exception("You have some exception")
throw new IOException("Connection failed!!")

スロー

public int myMethod() throws IOException, ArithmeticException, NullPointerException {}
  1. throwを使用して複数の例外を宣言することはできません。複数の例外を宣言できます。 public void method()はIOException、SQLExceptionをスローします。

  2. 特定の例外をスローするために明示的に使用されるため、チェック例外はthrowでのみ伝播できません。チェック例外は、throwsで伝播できます。

例外の伝播:例外は、キャッチされるまで、メソッドからメソッドへ、呼び出しスタックまで伝播します。したがって、a()がb()を呼び出し、b()がc()を呼び出し、d()を呼び出し、d()が例外をスローした場合、例外は、これらのメソッドのいずれかが例外をキャッチしない限り、dからc、bからaに伝搬します。 例外の伝搬とは?

39
Nirav Prajapati

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();
}
0
drew moore