カテゴリ: Kotlin 更新日: 2025/09/11

Kotlinのfinallyブロックの使い方を完全ガイド!初心者でもわかる例外処理の後片付け

Kotlinの例外処理におけるfinallyブロックの役割と使い方
Kotlinの例外処理におけるfinallyブロックの役割と使い方

先生と生徒の会話形式で理解しよう

生徒

「Kotlinの例外処理ってtryとcatchを使うんですよね?それ以外にも何かあるんですか?」

先生

「はい、もうひとつ大事な構文にfinallyというブロックがあります。」

生徒

「ファイナリー?それは何のために使うんですか?」

先生

「例外が起きても起きなくても、最後に必ず実行したい処理があるときに使います。実際に使い方を見ながら説明しましょう!」

1. Kotlinのfinallyブロックとは?

1. Kotlinのfinallyブロックとは?
1. Kotlinのfinallyブロックとは?

finallyブロックとは、Kotlinの例外処理で使う構文のひとつで、エラーが発生したかどうかに関係なく、最後に必ず実行される処理をまとめる場所です。

たとえば、開いたファイルを閉じたり、一時的に使ったメモリや変数をリセットしたり、エラーがあっても処理をちゃんと終わらせたいときに使います。

2. try-catch-finallyの基本構文

2. try-catch-finallyの基本構文
2. try-catch-finallyの基本構文

まずはtrycatchfinallyを使った基本的な構文を見てみましょう。


fun main() {
    try {
        val result = 10 / 0
        println("計算結果: $result")
    } catch (e: ArithmeticException) {
        println("エラーが発生しました: ${e.message}")
    } finally {
        println("最後に必ず実行される処理です")
    }
}

実行結果:


エラーが発生しました: / by zero
最後に必ず実行される処理です

finallyの部分は、エラーがあっても必ず実行されているのがわかりますね。

3. finallyは何のために使うの?初心者向けに例えで説明

3. finallyは何のために使うの?初心者向けに例えで説明
3. finallyは何のために使うの?初心者向けに例えで説明

プログラムの中でfinallyがある場面を、日常生活に例えると「片付け」です。

たとえば料理中に「火事が起きた」=エラー(例外)が起きたとしても、「ガスを止める」「換気扇を消す」などの片付けは必要です。finallyはその“必ずやるべき後片付け”の役割です。

このブロックは、エラーが発生しても、処理が正常に終わっても、どちらでも必ず動作します

4. エラーが起きないときでもfinallyは実行される

4. エラーが起きないときでもfinallyは実行される
4. エラーが起きないときでもfinallyは実行される

今度は、エラーが起きないパターンでもfinallyが実行されるか確認してみましょう。


fun main() {
    try {
        val result = 10 / 2
        println("計算結果: $result")
    } catch (e: ArithmeticException) {
        println("エラー: ${e.message}")
    } finally {
        println("処理の最後に実行されるfinallyブロック")
    }
}

実行結果:


計算結果: 5
処理の最後に実行されるfinallyブロック

このように、例外(エラー)が発生していなくても、finallyの中は必ず実行されています。

5. finallyでよく使われる実用的な使い方

5. finallyでよく使われる実用的な使い方
5. finallyでよく使われる実用的な使い方

現実のプログラムでは、finallyブロックは次のようなときによく使われます:

  • 開いたファイルやデータベースの接続を閉じる
  • 一時的に使ったリソースを解放する
  • ログ出力など最後にやるべきことを忘れずに実行する

プログラムの終了処理を明確にし、トラブルを防ぐために非常に役立ちます。

6. returnやthrowがあってもfinallyは実行される

6. returnやthrowがあってもfinallyは実行される
6. returnやthrowがあってもfinallyは実行される

注意点として、tryブロックの中でreturn(戻り値)やthrow(例外を投げる)があっても、finallyはちゃんと実行されます。

次のコードを見てみましょう:


fun sample(): Int {
    try {
        println("処理中...")
        return 100
    } finally {
        println("return前にfinallyが実行されます")
    }
}

fun main() {
    val result = sample()
    println("結果: $result")
}

実行結果:


処理中...
return前にfinallyが実行されます
結果: 100

このように、returnで関数を抜ける前にも、finallyが先に実行されていることがわかります。

7. Kotlinの例外処理でfinallyを上手に使うコツ

7. Kotlinの例外処理でfinallyを上手に使うコツ
7. Kotlinの例外処理でfinallyを上手に使うコツ

finallyあくまで“後始末”専用に使いましょう。エラー処理の代わりに使ったり、例外の内容を変更したりするのは避けた方が安全です。

以下のような心がけがポイントです:

  • catch:エラー処理
  • finally:後片付け(常に実行)

このように役割を分けて使うと、プログラムがきれいで読みやすくなります。

カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinの構文ルールまとめ!インデント・セミコロンなど初心者が最初に覚えるべきポイント
New2
Kotlin
Kotlinの関数ドキュメンテーションコメント(KDoc)の書き方を徹底解説!初心者でもわかる丁寧なガイド
New3
Kotlin
KotlinでHello Worldを表示するには?最初の1行を実行してみよう
New4
Go言語
Go言語の依存関係管理を始めよう!go modの基本設定と導入手順
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.3
Java&Spring記事人気No3
Kotlin
KotlinのAPI通信でGETリクエストを送る方法!初心者向け徹底ガイド
No.4
Java&Spring記事人気No4
Swift
SwiftのURLSessionでのネットワークエラー対策!再試行とタイムアウトを初心者向けに解説
No.5
Java&Spring記事人気No5
Go言語
Go言語のテストでタイムアウト・並行処理を扱うポイント
No.6
Java&Spring記事人気No6
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.7
Java&Spring記事人気No7
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.8
Java&Spring記事人気No8
Swift
Swift JSONデコード失敗の原因と対処|DecodingError徹底解説