Android のサンプル コードで、次のような「スロー」の見慣れない使い方を見つけました。
public Void handleResponse(HttpResponse response) throws IOException
{
...
}
この場合、この「スロー」がどのように機能するかを知りたいだけです。go google で適切な検索ワードを見つけるのが少し難しかったので、これを投稿しました。
throws
と を混ぜていると思いますthrow
。
throws
メソッドのシグネチャで、IOException
場合によっては をスローできることを示します。
throw new IOException()
実際の例外をスローします。
このthrows
キーワードはすべての Java プログラムで見られ、例外がチェック済み例外try {} catch(){}
である場合、メソッド呼び出しをブロックにカプセル化する必要があります。
メソッド宣言の後のthrows
キーワードは、このメソッドがこの例外をスローする可能性があることを示しています。これは、次のように、呼び出し元のメソッドがこの例外を確実にキャッチする必要があることを意味します。
...
try {
var.handleResponse(response);
catch (IOException e) {
// oops, something went wrong
e.printStackTrace();
}
関数本体のどこかでIOException がスローされる可能性handleResponse()
があります。関数を呼び出すときは、ブロックで囲む必要があります。try..catch
IOException
はチェックされた例外であるため、throws IOException
メソッド内のコードがスローできる場合IOException
(メソッド内でそれをキャッチしていない場合) は必須です。IOException
これは、RuntimeException ( など) の場合は必要ありませんNullPointerException
。たぶん、この質問を見てください。
Java チュートリアルから始めてください。同じチュートリアルから:
すべてのメソッドは、throw ステートメントを使用して例外をスローします。throw ステートメントには、スロー可能なオブジェクトという 1 つの引数が必要です。Throwable オブジェクトは、Throwable クラスの任意のサブクラスのインスタンスです。以下は、throw ステートメントの例です。
throw someThrowableObject;