【Android/Kotlin】CoroutineExceptionHandlerでエラーハンドリングする方法

この記事からわかること
- Android StudioのKotlin Coroutinesの実装方法の使い方
- CoroutineExceptionHandlerでエラーハンドリングをするには?
\ アプリをリリースしました /
環境
- Android Studio:Meerkat
- Kotlin:2.0.21
公式リファレンス:Coroutine exceptions handling
Kotlin Coroutineの例外の伝播
Kotlin CoroutineのCoroutineBuilder(コルーチンビルダー)
は「自動で例外を伝播するもの」と「ユーザーが明示的に例外を受け取るもの」の2つに分かれます。CoroutineBuilder(コルーチンビルダー)
とはlaunch
やasync
などのコルーチン(非同期処理)を作成するものです。
コルーチンビルダー | 例外の扱い | エラーハンドリング |
---|---|---|
launch / actor | 自動で例外を伝播(uncaught) | CoroutineExceptionHandler |
async / produce | ユーザーが明示的に処理する必要あり | try〜catch |
例外の扱いによる処理の違いがエラーハンドリングの違いです。
CoroutineExceptionHandler
launch
などのコルーチンビルダーではCoroutineExceptionHandler
を使用して例外(エラー)をキャッチしてハンドリングします。使い方としては先にエラーハンドリング方法を定義しそれをコルーチンスコープやコルーチンビルダーごとに指定します。
コルーチンスコープ
コルーチンスコープごとに指定するには初期化する際にスレッドなどと共に指定できます。
コルーチンビルダー
コルーチンビルダーごとに指定するにはlaunchの引数に指定します。
asyncなどはtry〜catch文で例外を捕捉する
async
ではawait
するまで処理が動作しないため例外も発生しません。例外の補足はtry〜catch文
で行います。
またtry〜catch文
の中でlaunch
を指定して例外が発生しても例外は捕捉できず、アプリがクラッシュします。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。