RuntimeExceptions はプログラミング エラーを示すはずであり、observables 内の何かが RuntimeException をスローしたときにアプリケーションをクラッシュさせたいと考えています。
これを行う最善の方法は何ですか?現在、このソリューションを検討しています(Kotlinですが、理解できることを願っています)
fun <T> Observable<T>.subscribeCrashOnRuntimeException(onNext: (T) -> Unit, onError: (Throwable) -> Unit) {
this.subscribe({
onNext(it)
}, { e ->
if (e is RuntimeException) {
throw e
} else {
onError(e)
}
})
}
fun usageExample() {
val observable = Observable.just(1)
observable.subscribeCrashOnRuntimeExceptions(
{ next -> Log.d("TAG", "next: $next") },
{ e -> Log.d("TAG", "error: $e") }
)
}
しかし、私はそれについて疑問を持っています。たとえば、このソリューションで特定の RuntimeExceptions を時折「キャッチ」するのは困難です。おそらく、グーグルの方法がわからない状況に対処するためのよく知られた方法がありますか?