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/