
今回は…
throw命令
というテーマでお送りします。

今回もバッチリ理解して、有終の美を飾ります。

理解は進んでいます。
今回も、よろしくお願いします。
【1】 例外対処方法

ここは前回の復習のコーナーです。
簡単に振り返っておきましょう。
発生する可能性のある例外について
Javaでは、大きく2つの対処方法が用意されています。
例外が発生したら
メソッド内でキャッチして対処する方法です。
発生した例外を ここで解消して
通常の処理に戻します。

例外が発生したら、このメソッドでは対処せず
呼び出し元に例外を投げる方法です。
この場合でも、メソッド呼び出しの階層の
どこかで 例外をキャッチして対応する必要があります。

…というお話を 前回しました。
そして前回は、左側のメソッド内で
対処する方法を学びました。

try-catch構文でしたね…。

「throws宣言」と「throw命令」を順に 見ていきましょう。


try-catch も覚えています。
【2】 throws宣言

行わない場合には、例外は
呼び出し元に投げられる。
✅ throws宣言は、呼び出し元に
投げられる可能性のある例外を
メソッド定義の中で宣言すること。
Javaでは、こう記述します。
throws 例外クラス名 {
(例外が発生する可能性のある処理)
}
通常のメソッド定義の引数を記述する丸括弧の後に
その後に例外クラス名を 記述します。

そして、メソッドの中には throws で指定した例外が
発生する可能性のある処理を記述します。

なお、必ず例外処理をする必要のある
検査例外については…
throws宣言を行うことが、必須
となります。

ですので、検査例外が発生する可能性のある
処理を記述した場合に…
try-catch も throws宣言 も行わない場合には
コンパイルエラーとなります。

【3】 throw命令

throw命令とは、例外オブジェクトを プログラム中に
throw(投げる)事ができる… というものです。
throwされた例外オブジェクトは…
JVMにより生成された例外オブジェクトと
同様に扱うことができます。
throw(投げる)事ができる。
✅ throwされた例外オブジェクトは
JVMにより生成された例外オブジェクトと
同様に扱うことができる。
new演算子により、例外オブジェクトを作成し
throw すれば…
try-catchで キャッチできますし…
メソッド呼び出し元に
例外処理を委ねることもできるのです。
Javaで throw 命令を書く時には
このようにします。
例外クラス名 変数名
= new 例外クラス名(メッセージ文字列);
throw 変数名;
まずは、例外オブジェクトの生成です。
通常に 例外クラスの インスタンス化を行います。
例外クラス名 変数名 を書いて =
new 演算子 に続けて、コンストラクタ呼び出しです。

この時に、引数には 例外オブジェクトが保持する
メッセージ文字列を指定します。

そして、生成した例外オブジェクトの throw です。
キーワード throw を記述した後に
生成したオブジェクトの変数名を記述します。

String msg = “これがメッセージです。”;
IllegalArgumentException ex
= new IllegalArgumentException(msg);
throw ex;
例としては、まず ここでは String型変数 msg に
例外オブジェクト作成時に必要となるメッセージを代入して…

この例では、IllegalArgumentExceptionという
例外クラスを インスタンス化します。

引数が不正という意味の例外です。
メッセージを引数で渡して、コンストラクタを起動し
インスタンス化して ex という変数に代入。
そして、throw 命令で 例外を throw しています。


と宣言しておく事で…
throw命令は、例外をビュンと投げる事ですね。
理解しました。

違いの解る男 になりました。
【まとめ】

① メソッド内でキャッチする
② 呼び出し元に投げる
✅ 今回は ② 呼び出し元に投げる
のお話でした。
行わない場合には、例外は
呼び出し元に投げられる。
✅ throws宣言は、呼び出し元に
投げられる可能性のある例外を
メソッド定義の中で宣言すること。
throw(投げる)事ができる。
✅ throwされた例外オブジェクトは
JVMにより生成された
例外オブジェクトと同様に
扱うことができる。
今回も、ご覧いただき、ありがとうございます。