Menu
Coddy logo textTech

finally ブロック

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

finally ブロックは、例外が発生するかどうかにかかわらず、try-catch ブロックの後に実行されるコードを含みます。通常、ファイルやデータベース接続を閉じるなどのクリーンアップ操作に使用されます。

try-catch-finallyブロックの基本構造は以下の通りです:

try {
   // 例外をスローする可能性のあるコード
} catch (ExceptionType e) {
   // 例外を処理するコード
} finally {
   // 常に実行されるコード
}

カウンターを使った例を見てみましょう:

int counter = 0;
try {
   int result = 10 / 0;
   // これは例外をスローします
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // これは常に実行されます
}

上記のコードを実行した後、counter には:

3

challenge icon

チャレンジ

簡単

processNumber という名前のメソッドを作成し、2つの引数を受け取る:

  1. 整数に変換するための String (number)
  2. 例外をスローするかどうかを決定する boolean (shouldThrow)

メソッドは以下を行うべきです:

  1. result 変数を 0 に初期化
  2. try ブロック内で:
    • shouldThrow が true の場合、10 を 0 で割る
    • それ以外の場合、number 文字列を整数に変換し、result に格納
  3. catch ブロックで:result を -1 に設定
  4. finally ブロックで:result に 100 を加算
  5. result を文字列として返す

チートシート

finally ブロックは、try-catch ブロックの後に実行され、例外が発生したかどうかに関係なく実行されます。クリーンアップ操作に使用されます。

基本構造:

try {
   // Code that might throw an exception
} catch (ExceptionType e) {
   // Code to handle the exception
} finally {
   // Code that always executes
}

カウンター付きの例:

int counter = 0;
try {
   int result = 10 / 0; // throws exception
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3; // always executes
}
// counter = 3

自分で試してみよう

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // ここにコードを書いてください
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz icon腕試し

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

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