Kotlinのデフォルトの関数の中に
ResultとrunCatchingがある
Javaにはないクラスなので今回試しに使ってみた
・Result
successとfailureをラップしてクラス
1 2 3 4 5 6 7 | 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を関数的ハンドリングできる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 |
・両方を合わせて使ってみる
1 2 3 4 5 6 7 8 9 | 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/