Javaの例外処理のthrowのサンプルです。
目次
throw
throwは、以下の機能があります。
| throw new 例外クラス名() |
- newを使って例外クラスをインスタンス化し、その例外をスローします。
- スローした例外はcatchで捕まえます。
- 任意の場所で任意の例外を発生させることができます。
| throw 例外インスタンス |
- 例外をスローします。
- スローした例外はcatchで捕まえます。
throwするクラス
- throwするクラスはThrowableクラスのサブクラスである必要があります。
- Throwableクラスは、すべての例外クラスの基底クラスです。(下図の黄色の部分)
- 以下はJava8 API仕様のThrowableクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Throwable.html

コード
newを使って例外クラスをインスタンス化し、その例外をスローするサンプルです。
9行目は、NullPointerExceptionクラスをインスタンス化しスローしています。ここでは説明用として強制的にNullPointerExceptionを発生させています。
21行目は、catchで例外を捕まえています。
package test1;
class Sample {
static void runSample(){
int i = 5;
if (i == 5) {
throw new NullPointerException();
// throwで、例外(NullPointerException)を発生させる
}
}
}
public class Test1 {
public static void main(String[] args) {
try{
Sample.runSample();
// 例外をキャッチ
}catch (NullPointerException e) {
System.out.println(e); //java.lang.NullPointerException
}
}
}
例外をスローするサンプルです。
7行目は、0で割っているのでArithmeticExceptionの例外が発生します。
9行目は、ArithmeticExceptionの例外をキャッチします。
12行目は、throw eで例外のインスタンスをスローしています。
23行目は、12行目でスローされた例外をキャッチしています。12行目のthrowがない場合は、ここのcatchブロックに入ってきません。
package test1;
class Sample {
static void runSample() {
try {
int i = 6/0;
}
catch(ArithmeticException e){
System.out.println("エラー1");//エラー1
throw e;
}
}
}
public class Test1 {
public static void main(String[] args) {
try{
Sample.runSample();
// 例外をキャッチ
}catch (ArithmeticException e) {
System.out.println("エラー2"); //エラー2
}
}
}
独自のエラーメッセージを表示する
例外クラスのコンストラクタの引数に文字列をセットすると、getMessageメソッドで設定した文字列を取得することができます。
9行目は、コンストラクタの引数に文字列をセットしています。
21行目は、getMessageメソッドで設定した文字列を表示しています。
package test1;
class Sample {
static void runSample(){
int i = 5;
if (i == 5) {
throw new NullPointerException("エラーです");
// throwで、例外(NullPointerException)を発生させる
}
}
}
public class Test1 {
public static void main(String[] args) {
try{
Sample.runSample();
}catch (NullPointerException e) {
System.out.println(e.getMessage());//エラーです
System.out.println(e);//java.lang.NullPointerException: エラーです
}
}
}
関連の記事
Java 検査例外のサンプル(チェック例外)
Java 非検査例外のサンプル(非チェック例外)
Java 独自の例外を作成するサンプル
Java printStackTraceとは