Kotlin:
エラー処理

どのように:

Kotlinはエラーを管理するためにtry, catch, finally, throwを提供しています。こちらが使い方です:

fun main() {
    val numerator = 10
    val denominator = 0

    try {
        val result = numerator / denominator
        println("Result: $result")
    } catch (e: ArithmeticException) {
        println("Can't divide by zero, buddy.")
    } finally {
        println("This happens no matter what.")
    }
}

出力:

Can't divide by zero, buddy.
This happens no matter what.

tryブロック内で何かがうまく行かない場合、実行はcatchにジャンプします。これはスローされた特定のエラー(この場合はArithmeticException)をキャッチします。finallyブロックは、結果にかかわらずその後に実行されます。

深掘り

try-catchブロックは初期のプログラミングの時代からあります──安全網のようなものです。Kotlinには、例外を自分で投げ込むためのthrowがあり、必ず実行したいコードのためのfinally(よくある後始末の作業)があります。

選択肢にはResultタイプやKotlinのtryを式として扱う方法があります。

val result: Result<Int> = try {
    Result.success(numerator / denominator)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

このアプローチはResultオブジェクトを返します──ハンドルされない例外のドラマなしに、成功か失敗を得ることができます。

Kotlinでの実装は、tryを式として使えるためすっきりしています。つまり、値を返します。このような選択肢は、Kotlinでのエラー処理をかなり多様にします。ワークショップで道具を選ぶように、仕事に適した道具を選ぶことについてです。

関連情報

  • 例外に関するKotlinドキュメント:Kotlinの例外処理
  • Resultタイプに関するKotlinドキュメント:Kotlin Result
  • 『Effective Java(第3版)』ジョシュア・ブロック著 — 例外に関する素晴らしい洞察を提供していますが、Javaに特化しています。