Skip to main content

KotlinのResultとrunCatchingを使ってみた

Kotlinのデフォルトの関数の中に
ResultとrunCatchingがある
Javaにはないクラスなので今回試しに使ってみた


・Result
successとfailureをラップしてクラス

val success = Result.success(1)
println("suceess ${success.getOrNull()}")
//suceess 1

val failure = Result.failure<Exception>(Exception("masterka"))
println("error ${failure.exceptionOrNull()?.localizedMessage}")
//error masterka

 

・runCatching
errorを関数的ハンドリングできる

runCatching {
    throw Exception("masterka")
}.onSuccess {
    println("success1 $it")
}.onFailure {
    println("failure1 ${it.localizedMessage}")
}
//failure1 masterka

runCatching {
    "masterka"
}.onSuccess {
    println("success2 $it")
}.onFailure {
    println("failure2 ${it.localizedMessage}")
}
//success2 masterka

 

・両方を合わせて使ってみる

val result = runCatching {
    "masterka"
}.onSuccess {
    Result.success(it)
}.onFailure {
    Result.failure<Throwable>(it)
}
println(result)
//Success(masterka)

 

こうしてうまく使えましたとさ
try-catchの時代が終わったのかしら(・ェ・`)

参考
https://satoshun.github.io/2018/12/result/

関連記事:

Pocket