ユーザー定義の例外処理は3ステップで解決! ~Java初心者の備忘録~

プログラミング
この記事は約3分で読めます。

こんにちはペンすけです!
前回は夢の国でオブジェクト指向を考える記事を書きました▼▼

ペンすけ
ペンすけ

コンパイルは通るのに、実行時にプログラムが止まってしまうことがある…。

今回は、個人的に一番沼った ユーザー定義の例外処理 について整理していきます!

ユーザー定義は3ステップで解決!

次に、本題のユーザー定義の例外処理の作り方について、前回のアトラクションの待ち時間を例にとって整理しましょう!

ペンすけ
ペンすけ

アトラクションの待ち時間は5分刻みだね。

5の倍数以外の待ち時間にならないような、ユーザー定義の例外処理を考えてみよう!

1. ユーザー定義の例外処理クラスを作成!

ペンすけ
ペンすけ

ユーザー定義の例外処理クラスで気を付けることは次の2点!

  • 例外クラスであることを表すために、 extends Exception を付けること!
  • コンストラクタの内容は super(msg) にする!

ここでは、WaiTimeExceptionを自分で作った例外としています。
待ち時間が5の倍数でないときに例外処理を起動し、実行を止めるクラスです。

public class WaitTimeException extends Exception {
    public WaitTimeException(String msg) {
        super(msg);
    }
}

2. catch文に例外処理の記述!

ペンすけ
ペンすけ

ここは通常の例外処理と同じ書き方でOK!

try{
    // 待ち時間の処理
}
catch (WaitTimeException e){
    System.out.println(e.getMessage());
}

3. throwで例外処理を投げる!

ペンすけ
ペンすけ

ここがポイント!!

条件に合わない処理の場合に、 例外処理が起こるよう自分で記述 する!

  • throw new [自分で名前を付けた例外処理名](“例外メッセージ”);
// 5の倍数でないなら例外処理を行う
if(0 != waitTime % 5){
    throw new WaitTimeException("待ち時間が不正です。");
}

ソースコード全体

WaitTimeExceptionクラス

public class WaitTimeException extends Exception {
    public WaitTimeException(String msg) {
        super(msg);
    }
}

Mainクラス

class Main{
    public static void main(String[] args){

        Attraction attraction = new Attraction("絶叫バイキング", "パイレーツエリア", 35);
        
        try {
            int waitTime = 20;

            // 5の倍数でないなら例外処理を行う
            if(0 != waitTime % 5){
                throw new WaitTimeException("待ち時間が不正です。");
            }

            attraction.setWaitTime(waitTime);
            attraction.printInfo();
        }
        catch (WaitTimeException e){
            System.out.println(e.getMessage());
        }

    }
}

コメント

タイトルとURLをコピーしました