👖

[Java]throw/throws とは (備忘録)

に公開

1.throw とは

・意図的に例外を発生させて、例外処理を行うことができます。
意図的に例外を発生させるとは、ある条件と一致する場合に例外を発生させ、エラーメッセージを返すという意味です。
※例外が分からない場合、こちらを確認してください。

throwの書き方
// new 例外クラス名 により例外オブジェクトが生成
throw new 例外クラス名(表示するメッセージ内容);

2.throws とは

・メソッドにおいて、指定した例外が発生することを宣言する為に使用します。
・メソッド内で例外が発生した場合、呼び出し元に例外処理を投げることができます。

throwsの書き方
メソッド名() throws 例外クラス名{}

3.サンプルプログラム

〇例1:throwを使用しIllegalArgumentExceptionの例外を発生

Sample_1.java
import java.util.Scanner;

public class Sample_1 {
    public static void main(String[] args) {
        System.out.println("年齢を、数値のみで入力してください。");
        Scanner scanner = new Scanner(System.in);
        
        // キーボードからの入力内容を1行読み取って整数に変換
        int age = Integer.parseInt(scanner.nextLine());
        // メソッドを呼び出す
        checkAge(age);
    }
    
    public static void checkAge(int age) {
        if (age < 18) {
            throw new IllegalArgumentException("未成年は利用不可能です。");
        } else {
            System.out.println("利用可能です。");
        }
    }
}

〇例2:throwsを使用したサンプルプログラム

Main.java
import java.util.Scanner;
// 呼び出し元クラス
public class Main {
    public static void main(String[] args) {
        System.out.println("名前を入力してください。");

        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        // Sample_2クラスのインスタンス作成
        Sample_2 result = new Sample_2();

        try {
            // Sample_2クラスのmsgメソッドを呼び出す
            result.msg(name);
        } catch (IllegalArgumentException e) {
            System.out.println("名前が入力されていません。");
        } catch (Exception e) {
            System.out.println("名前が空文字です。");
        }
    }
}          
Sample_2.java
public class Sample_2 {
    public static void msg(String name) throws Exception {
        if (name == null) {
            throw new IllegalArgumentException();
        }

        if (name.equals("")) {
            throw new Exception();
        }

        System.out.println(name + "さんの名前の入力が確認できました。");
    }
}

4.参考

【Java初心者向け】throwとthrowsの違いとその使い方
throwとthrowsの意味と使い分けを初心者向けに解説【Java入門講座】5-3 throwとthrows
【Java】throwとthrowsの使い方を簡潔に説明してみる
【Java】IllegalArgumentExceptionとは?原因と対処法をわかりやすく解説

5.その他

実行環境

Discussion