Menu
CoddyTech

try-catch の基本

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 40/59。

Javaのtry-catchブロックは、プログラムの実行中に発生する可能性のある例外(エラー)を処理するために使用されます。例外をスローする可能性のあるコードはtryブロックに記述し、エラー処理のコードはcatchブロックに記述します。

try-catchブロックの基本構造は次のとおりです。

try {
   // 例外をスローする可能性のあるコード
} catch (ExceptionType e) {
   // 例外を処理するコード
}

Integer.parseInt()を使って実際に見てみましょう。これはStringを整数に変換します。

String text = "abc";
try {
   int number = Integer.parseInt(text);
   System.out.println(number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
}

上記のコードを実行すると、出力は次のようになります:

Error: Not a valid number

1つのtryの後には、例外の種類ごとに1つずつ、複数のcatchブロックを続けることができます。Javaは、スローされた例外に型が一致する最初のブロックを実行します。

try {
   int number = Integer.parseInt(text);
   System.out.println(10 / number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
   System.out.println("Error: Division by zero");
}
challenge icon

チャレンジ

簡単

divideNumbersという名前のメソッドを作成し、3つの引数を受け取るようにします:

  1. 最初の数値を表す String(num1)
  2. 2番目の数値を表す String(num2)
  3. 配列のインデックスを表す整数(index)

このメソッドは次の処理を行う必要があります:

  1. サイズ2の配列を作成する
  2. num1を整数として解析した値をnum2を整数として解析した値で割った結果を、指定されたインデックスに格納する
  3. 指定されたインデックスの値を返す
  4. 発生する可能性のあるすべての例外を処理し、代わりに対応するエラーメッセージを返す

返すメッセージは次のとおりです:

  • NumberFormatExceptionの場合:"Error: Invalid number format"
  • ArithmeticExceptionの場合:"Error: Division by zero"
  • ArrayIndexOutOfBoundsExceptionの場合:"Error: Invalid array index"
  • 処理が成功した場合:結果を文字列として返す

自分で試してみよう

import java.util.Scanner;

public class Main {
    public static String divideNumbers(String num1, String num2, int index) {
        // ここにコードを書いてください
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num1 = scanner.nextLine();
        String num2 = scanner.nextLine();
        int index = Integer.parseInt(scanner.nextLine());
        
        System.out.println(divideNumbers(num1, num2, index));
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Javaオンラインコンパイラ