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"
// 0runCatchingのポイント
try-catchを省略してコードを短くできるgetOrElseを使うことで、例外発生時のデフォルト値を設定可能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を使うことで、例外処理をより簡潔に記述できるgetOrElseやonFailureを活用すると、エラーハンドリングを柔軟に制御可能getOrNullを使えば、null安全な処理にも対応できる
エラーハンドリングをスマートに行いたい場合は、ぜひrunCatchingを活用してみてください!

