0
1

More than 1 year has passed since last update.

【Java】例外処理の基本の復習

Posted at

目的

  • Javaの例外処理を学んだので、復習のためにアウトプットする

実際の手順と実例

1. 例外処理とは

例外 == エラーのこと。
例外が発生したときに実行する処理を例外処理という。

2.例外処理の基本

ここではカリキュラムの問題を再度実行して復習していきます。

その前の前提知識として、例外処理の基本構文から

try-catch文(try-catch-finally文)

try {
    tryブロック例外が発生する可能性がある処理
} catch (例外クラス 変数名) {
    catchブロック例外が発生した時に実行する処理
} catch (例外クラス 変数名) {
    catchブロック例外が発生した時に実行する処理
} finally {
    finallyブロック(例外発生の有無にかかわらず必ず実行する処理)
}

throw文

意図的に例外を発生させたい場合に使用する(スローする)。

// 例外インスタンスをスロー
throw 例外インスタンス;

// 例外インスタンスを生成してスロー
throw new 例外クラス;

throws文

throws文は例外が発生したcatch文を記述して、メソッド内で例外処理するのではなく、例外をスローして呼び出し元に例外処理をさせる場合に使用する。

修飾子 戻り値の型 メソッド名(引数) throws 例外クラスの型 {
    // 処理
    return 戻り値;
}

文章だけではわからなかったので実際に例題を見ながら、理解を深めていきたいと思います。

3. 例外処理の確認問題

Q.「Practice.java」を実行した結果が以下になるように、プログラムを作成してください。

実行結果

インデックス 2 の要素は 5 です
IllegalArgumentExceptionが発生しました
java.lang.IllegalArgumentException: 3 はサイズの範囲外です
    at practice.Chapter10.validIndex(Chapter10.java:xxxx)
    at practice.Chapter10.main(Chapter10.java:xxxx)
SQLExceptionが発生しました
java.sql.SQLException: SQLエラーです
    at practice.Chapter10.throwSQLException(Chapter10.java:xxxx)
    at practice.Chapter10.main(Chapter10.java:xxxx)
throwSQLExceptionの呼び出し終了
mainメソッド終了

Practice.java

package practice;

import java.sql.SQLException;

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

        try {
            int array[] = { 1, 3, 5 };
            Practice.validIndex(array, 2);
            Practice.validIndex(array, 3);

            System.out.println("validIndexの呼び出し終了");
        } catch (IllegalArgumentException e) {
            System.out.println("IllegalArgumentExceptionが発生しました");
            e.printStackTrace();
        }

        // try-catch文を記述
        // ・throwSQLExceptionメソッドを呼び出し
        // ・SQLExceptionをキャッチして、メッセージとスタックトレースを出力
        // ・"throwSQLExceptionの呼び出し終了"のメッセージを出力

        System.out.println("mainメソッド終了");
    }

    // validIndexメソッドを作成
    // ・indexがarrayのサイズの範囲内なら、インデックスの要素を出力
    // ・サイズの範囲外なら、IllegalArgumentExceptionをスロー

    public static void throwSQLException() throws SQLException {
        throw new SQLException("SQLエラーです");
    }
}

A.

package practiceMethod;

import java.sql.SQLException;

public class Practice {
    public static void main(String[] args) throws SQLException {
//      try-catch文で例外を発生させる
        try {
//          配列が3つのサイズ それそれvalidIndexというメソッドを作成して定義
            int array[] = { 1, 3, 5 };
//          29行目からメソッド定義
            Practice.validIndex(array, 2);
            Practice.validIndex(array, 3);
//          例外が発生しなかった場合に出力
            System.out.println("validIndexの呼び出し終了");
//          例外クラス,変数名を引数に入力
        } catch (IllegalArgumentException e) {
//          例外発生時に引数を出力する
            System.out.println("IllegalArgumentExceptionが発生しました");
            e.printStackTrace();
        }

        // try-catch文を記述/throwSQLExceptionメソッドを呼び出し
        try {
            throwSQLException();
            // ・SQLExceptionをキャッチして、メッセージとスタックトレースを出力
        } catch (SQLException s) {
            System.out.println("SQLエラーです");
//          下記のために6行目にthrows SQLExceptionを宣言 printStackTrace()で代用可
            throw s;
        }
        // ・"throwSQLExceptionの呼び出し終了"のメッセージを出力
        System.out.println("throwSQLExceptionの呼び出し終了");
        System.out.println("mainメソッド終了");
    }

    // validIndexメソッドを作成
    private static void validIndex(int[] array, int index) {
//      if文で条件が合致した際に「 index はサイズの範囲外です」を出力する
//      配列のサイズはlengthメソッドを使用 列のサイズは3で3と条件に合致しているので下記の文が出力される
        if (array.length <= index) {
            // サイズの範囲外なら、IllegalArgumentExceptionをスロー
//          49行目のSQLExceptionを使用してスタックトレースを出力
            throw new IllegalArgumentException(index + "はサイズの範囲外です");
        }
        // indexがarrayのサイズの範囲内なら、インデックスの要素を出力
        System.out.println("インデックス" + index + "の要素は" + array[index] + "です");
    }

    public static void throwSQLException() throws SQLException {
        throw new SQLException("SQLエラーです");
    }
}

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1