カテゴリ: Kotlin 更新日: 2026/03/09

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

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

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

生徒

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

先生

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

生徒

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

先生

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

1. Kotlinのfinallyブロックとは?役割とメリットを解説

1. Kotlinのfinallyブロックとは?役割とメリットを解説
1. Kotlinのfinallyブロックとは?役割とメリットを解説

finallyブロックとは、Kotlinの例外処理(エラーハンドリング)において、「エラーが起きても、起きなくても、最後に必ず実行する処理」を記述するための専用エリアです。

プログラミングをしていると、データの読み込み中にエラーが発生して処理が止まってしまうことがあります。しかし、エラーで止まったからといって「開きっぱなしのファイル」や「接続したままのデータベース」を放置すると、コンピュータの動作が重くなる原因になります。こうした事態を防ぐための「絶対に行う後片付け」finallyの役割です。

ポイント: try(やってみる)や catch(エラーを捕まえる)の結果に左右されず、最終的に必ずここを通ります。

まずは、イメージを掴むためにごく簡単なプログラムを見てみましょう。ここでは「お片付け」をメッセージとして出力する例を紹介します。


fun main() {
    println("--- 処理を開始します ---")
    try {
        println("1. ファイルを開いて読み込み中...")
        // ここでエラーが起きても起きなくても...
    } catch (e: Exception) {
        println("2. エラーが発生した場合の処理")
    } finally {
        // エラーの有無にかかわらず、最後に必ずここが動く!
        println("3. 【重要】開いたファイルを閉じて後片付け完了!")
    }
    println("--- すべての工程が終了 ---")
}

このように、finallyを使うことで「処理のやりっぱなし」を防ぎ、安全でクリーンなプログラムを書くことができるようになります。初心者の方は、「エラーに関係なく最後に絶対実行したいことはfinallyに書く」と覚えておきましょう。

2. try-catch-finallyの基本構文と役割

2. try-catch-finallyの基本構文と役割
2. try-catch-finallyの基本構文と役割

プログラムを実行中に予期せぬエラー(例外)が発生しても、アプリを強制終了させずに適切に処理するための仕組みがtry-catch-finallyです。プログラミング初心者の方でも分かりやすいよう、身近な算数の「0で割る」というエラーを例に、基本構文を解説します。

各ブロックの役割:

  • try:エラーが起きそうな処理を書く場所
  • catch:エラーが起きた時に「どう対処するか」を書く場所
  • finally:成功・失敗に関わらず「最後に必ずやりたいこと」を書く場所

fun main() {
    println("処理を開始します。")

    try {
        // 1. エラーが発生する可能性のある処理(10÷0は数学的にNG)
        val result = 10 / 0 
        println("計算結果: $result") // エラーが起きるとこの行は飛ばされます
    } catch (e: ArithmeticException) {
        // 2. エラーが発生した時に実行される処理
        println("【重要】計算エラー(${e.message})が発生したため、処理を中断して回避しました。")
    } finally {
        // 3. 成功しても失敗しても必ず実行される処理
        println("後片付け:ファイルのクローズやメモリの解放など、最後に必ず実行される処理です。")
    }

    println("プログラムを安全に終了します。")
}

実行結果:


処理を開始します。
【重要】計算エラー(/ by zero)が発生したため、処理を中断して回避しました。
最後に必ず実行される処理です。
プログラムを安全に終了します。

上記のサンプルでは、10 / 0というエラーが起きた瞬間に、プログラムが止まるのではなくcatchブロックへジャンプしています。そして注目すべきは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が先に実行されていることがわかります。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

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

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

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

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

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

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

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.8
Java&Spring記事人気No8
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法