LoginSignup
2
2

【Java】 エラーが発生した場合の分岐 | 例外処理の使い方ガイド

Last updated at Posted at 2023-06-04

はじめに

例外処理はJavaプログラミングにおいて重要な概念です。
例外処理とはプログラムの実行中に発生したエラーを処理するための仕組みです
この記事では、Javaの例外処理の基本的な構文と具体的な使用例を解説します。

例外処理の基本的な使い方

Javaでは、例外処理を行うためにtry-catch構文を使用します。
以下は基本的な構文の例です。


import java.util.InputMismatchException;

try {
    // // エラーが発生する可能性のあるコード
} catch (例外クラス 変数名) {
    // 例外クラス名1に対する処理
} catch (例外クラス2 変数名) {
    // // 例外クラス名2に対する処理
} finally {
    // 最終的に実行したい処理があれば記述、省略可
}

計算エラーの場合(ArithmeticException)

public class Example {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("結果: " + result);
        } catch (ArithmeticException e) {
            System.out.println("エラーが発生しました: " + e.getMessage());
        }
    }

    public static int divide(int num1, int num2) {
        return num1 / num2;
    }
}

この例では、divideメソッド内で0で割り算を行おうとしています。
しかし、0で割ることはできないため、ArithmeticException(アリスメティックエクセプション)がスローされます。
try-catchブロックを使用して、例外が発生した場合に備えてエラー処理を行っています。

実行結果
エラーが発生しました: / by zero

ファイル読み込みエラー

try {
    File file = new File("sample.txt");
    BufferedReader reader = new BufferedReader(new FileReader(file));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    reader.close();
} catch (FileNotFoundException e) {
    System.out.println("ファイルが見つかりません: " + e.getMessage());
} catch (IOException e) {
    System.out.println("入出力エラーが発生しました: " + e.getMessage());
}

データベース接続エラー

try {
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
    Statement statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
    while (resultSet.next()) {
        String username = resultSet.getString("username");
        System.out.println("ユーザー名: " + username);
    }
    resultSet.close();
    statement.close();
    connection.close();
} catch (SQLException e) {
    System.out.println("データベースエラーが発生しました: " + e.getMessage());
}

ユーザーからの入力エラー

try {
    Scanner scanner = new Scanner(System.in);
    System.out.print("整数値を入力してください: ");
    int num = scanner.nextInt();
    System.out.println("入力値: " + num);
} catch (InputMismatchException e) {
    System.out.println("入力エラーが発生しました: " + e.getMessage());
}

エラー内容を呼び出し元に送信する(throws)

public class Example {
    public static void main(String[] args) {
        try {
            calculateDivision(10, 0);
        } catch (ArithmeticException e) {
            System.out.println("エラーが発生しました: " + e.getMessage());
        }
    }

    public static int calculateDivision(int num1, int num2) throws ArithmeticException {
        if (num2 == 0) {
            throw new ArithmeticException("0で割ることはできません");
        }
        return num1 / num2;
    }
}

この例では、calculateDivisionメソッドが2つの整数を受け取り、もしnum2が0である場合にはArithmeticExceptionをスローしています。mainメソッドでは、calculateDivisionメソッドを呼び出していますが、0で割り算を試みて例外が発生します。そのため、try-catchブロックでArithmeticExceptionをキャッチし、エラーメッセージを出力しています。

throwsキーワードは、メソッド宣言で使用され、そのメソッドが特定の例外をスローする可能性があることを示します。この例では、calculateDivisionメソッドがArithmeticExceptionをスローする可能性があるため、throws ArithmeticExceptionと宣言されています。

まとめ

例外処理は、プログラム実行中に発生する予期しない状況やエラーに対処するための仕組みです。
try-catchブロックを使用して例外をキャッチし、適切な処理を行うことができます。
例外処理を適切に利用することで、予期せぬエラーに対処し、プログラムの安全性と信頼性を高めることができます。

2
2
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
2
2