kotlin

【Kotlin】例外処理(try catch)とは?概念や使い方を徹底解説!

こんにちは、テルプロです!

「Kotlinの例外処理(try catch)の使い方がわからない」とお悩みではないでしょうか?

テルプロ

本記事ではそんな悩みを解決していきます!

Kotlinの例外処理 try catchとは

  1. 想定内のエラー(例外)が起きたときに行う処理のこと
  2. 例外の発生にかかわらず実行したいコードを書く’finally’ブロックが存在する

Kotlinの例外処理 try catchを理解する上で、押さえておくべきポイントは上記の2点のみです。

  • Error・・・(想定外の)エラー 👉 コードを修正する
  • Exception・・・(想定内の)エラー 👉 コードで対策する(try catch文を使用する)

この記事では(想定内の)エラー Exceptionについて記載します。
(想定内の)エラー Exceptionはtry catch文というものを使用して対策します。

では、Kotlinの例外処理 try catchについて詳しく解説していきます!

try catchの基本的な使い方

try catchの簡単解説

今回は「プログラム実行中にエラーが起きそうな場合」を例に挙げます。

プログラミングには、実行前に検出可能なエラーと、実行して検出できるエラーが存在します。例外処理は、後者の実行して検出できるエラーに対処するために用いられます。

プログラムを作成するときは、エラーが発生する可能性がある部分に対して、例外処理を適切に行いプログラムが異常終了しないようにする必要があります。

例外処理は、エラーが起きたときの予防措置として用います。

では、実際の使用例を用いて解説していきます!

Kotlinのtry catch文 使用例

fun main() {
    // [myString]に'abc'を格納する
    val myString = "abc"

    try {
        // [myString]をDouble型として出力しようとする
        println(myString.toDouble())
    } catch (e: NumberFormatException) {
        // 実際にエラーが起きたときのために[catchブロック]で対策する
        println("$e")
        println("tryブロックでException 発生")
    } finally {
        // 例外の発生にかかわらず必ず実行されるブロック
        println("finallyブロックが実行されました")
    }
}


/*出力結果 
java.lang.NumberFormatException: For input string: "abc"
tryブロックでException 発生
finallyブロックが実行されました
*/

Kotlinのtry catch文 簡単解説

上記は、エラーが起きそうなコードを例外処理で対策するプログラムです

Kotlinでは例外処理はtry-catch文で行います。
try-catch文は[tryブロック]、[catchブロック]、[finallyブロック]の3つで構成されています。
ここで1点注意していただきたい点があります。[finallyブロック]は必要がなければなくても構いません。

それでは各ブロックに何を記載するのか解説していきます。
 ・[tryブロック]:エラーが発生する可能性のあるコードを記載します。
 ・[catchブロック]:エラーが発生した際に実行する処理を記述します。
 ・[finallyブロック]:エラーの発生有無に問わず実行したい処理を記述します。

今回の例では「myString.toDouble()」で変数myStringの中身をDouble型に変換しようとしていますが、myStringの中には”abc”が入っているので、変換できずExceptionが発生します。

以上が、例外処理の基本的な使い方です。

まとめ

今回は例外処理(try catch)の概念や使い方を徹底解説しました。

例外処理は、エラーが発生した際に備えるために使用します。Kotlinのtry catchをしっかり理解し、開発の可能性を広げましょう!

最後までご覧いただきありがとうございました。ではまた!

参考文献

ABOUT ME
テルプロ
東京都在住のアプリエンジニア。大学では、ソフトウェア開発の研究に取り組む。長期のエンジニアインターンシップを経て、実務スキルを磨き、現在はフリーランスエンジニアとしても活動中。メインはモバイルアプリ開発。IT関連の記事監修も行い、技術の共有と普及に励んでいます。 監修実績(レバテックフリーランス
Flutter関連の書籍を出版しました!