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に特化しています。