スローは例外を発生させます。例外は、それを処理できる catch ブロックによってキャッチされるまで、関数のスタックに逆方向に渡されます。
throw キーワードをメソッド宣言に入れると、そのメソッドの呼び出しで例外が生成される可能性があることを示します。例えば:
public void methodFoo (int val) throws IllegalArgumentException {
if (val <0) throw new IllegalArgumentExecption();
}
methodFoo がタイプ IllegalArgumentException の例外を発生させることができることを意味します。このようなメソッドを呼び出すときは、通常、次の try/catch ブロック ステートメントを使用します。
try{
methodFoo(int param);
}catch (IllegalArgumentException e){
//if any method call inside methodFoo will raise such exception the execution flow of the program will be interrupted and the execution restart from the first catch block that intercept that execption
}
このアプローチの「良い点」は、このような機能を使用すると、メソッド呼び出しが成功したことを確認するためにメソッドの戻り値をチェックする必要がないことです。C 言語では通常、次のようなことを行います。
int ret = methodFoo();
if (ret == null){
//error
}