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/