runCatchingでスマートな例外処理

Kotlin
記事内に広告が含まれる場合があります

Kotlinでは、例外処理をより簡潔に書くためにrunCatchingという便利な関数が用意されています。通常のtry-catchを使わずにエラーを処理できるため、可読性が向上し、コードがスッキリまとまります。

runCatchingの基本的な使い方

通常、Kotlinで例外処理を行う場合はtry-catchを使います。

Kotlin
try {
    val number = "123a".toInt()
    println(number)
} catch (e: NumberFormatException) {
    println("エラー発生: ${e.message}")
}

しかし、この書き方ではtry-catchブロックが長くなり、エラーハンドリングが煩雑になりがちです。runCatchingを使えば、これをシンプルにできます。

Kotlin
val result = runCatching {
    "123a".toInt()
}.getOrElse {
    println("エラー発生: ${it.message}")
    0
}

println(result) // 出力: エラー発生: For input string: "123a"
               //        0

runCatchingのポイント

  1. try-catchを省略してコードを短くできる
  2. getOrElseを使うことで、例外発生時のデフォルト値を設定可能
  3. onFailureを使えばエラー時のログ出力を簡単に追加できる

runCatchingの応用例

1.成功時と失敗時で異なる処理を行う

Kotlin
val result = runCatching {
    "42".toInt()
}.onSuccess {
    println("変換成功: $it")
}.onFailure {
    println("エラー発生: ${it.message}")
}.getOrDefault(-1)

println("最終結果: $result")

出力(成功時):

変換成功: 42  
最終結果: 42  

出力(失敗時):

エラー発生: For input string: "abc"  
最終結果: -1  

2.例外を発生させずに安全に値を取得

Kotlin
val number: Int? = runCatching { "100".toInt() }.getOrNull()
println(number) // 出力: 100

失敗した場合はnullが返るため、?:を使ってデフォルト値を指定することもできます。

Kotlin
val safeNumber = runCatching { "abc".toInt() }.getOrNull() ?: 0
println(safeNumber) // 出力: 0

まとめ

  • runCatchingを使うことで、例外処理をより簡潔に記述できる
  • getOrElseonFailureを活用すると、エラーハンドリングを柔軟に制御可能
  • getOrNullを使えば、null安全な処理にも対応できる

エラーハンドリングをスマートに行いたい場合は、ぜひrunCatchingを活用してみてください!

タイトルとURLをコピーしました