Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Behavior of nested async in Kotlin Coroutines
Search
yurihondo
December 18, 2018
Programming
2
1.2k
Behavior of nested async in Kotlin Coroutines
yurihondo
December 18, 2018
Tweet
Share
More Decks by yurihondo
See All by yurihondo
Road to Single Activity Uncovered
yurihondo
0
210
Road to Single Activity
yurihondo
2
820
YouTubeへのライブ配信機能をリリースするまで
yurihondo
0
2.9k
Shibuya.apk_41_DeepDiveintoRememberSaveable.pdf
yurihondo
0
480
Composeでシステムオーバーレイ / System overlay in Compose
yurihondo
0
360
Service由来のViewでViewModelを使えるようにしてみた
yurihondo
2
790
瀕死のシステムが強くなって復活する話
yurihondo
1
530
New UI Design & Debugging Tools In Android Studio
yurihondo
0
720
外部デバイスと密に連携するAndroidアプリに最適なアーキテクチャとは?
yurihondo
0
14k
Other Decks in Programming
See All in Programming
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
13
7.4k
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
130
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
12
6.1k
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
2k
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
0
200
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
8
2.1k
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
2.2k
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
190
TipKitTips
ktcryomm
0
130
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
220
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
350
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
190
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
9.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
The Curious Case for Waylosing
cassininazir
0
260
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
The SEO identity crisis: Don't let AI make you average
varn
0
400
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
160
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Transcript
Behavior of nested async in Kotlin Coroutines
About me Androidアプリ開発@DeNA 趣味は、ストリートダンス 今年、長男が爆誕 2 URI 本戸 裕理 (ホンド
ユウリ)
Introduction 今更ですが! Kotlin 1.3より、Coroutineの安定版が 利用できるようになりました 3
Introduction 私が携わるプロジェクトでもCoroutineの アップデートが 行われました 4
Introduction 結果、 アップデート起因のバグを埋め込み、 修正をする事になりました 5
Introduction そう、 あるあるです 6
Introduction (流出はしていません) 一応、最近センシティブだからね 7
Introduction 今日は、バグ対応から学んだ ◦ ネストしたasyncの振舞いと対応方法 について簡単にお話させて頂きます 8
ネストしたasyncの振舞いと対応方法 9
ver. 0.30.0より、ネストしたasyncのキャンセルが、 親のcoroutineにも伝播するようになったため、 今までエラーハンドリングを意識していなかった 箇所で例外が発生した 該当のFeature <https://github.com/Kotlin/kotlinx.coroutines/releases/tag/0.30.0> Overview for Bug
10
例えば、 以下のようなケースで例外が発生するようになった Example 11
例外が親のlaunchにも伝播する Example 12 Exception
Solution 1 withContextを利用 13
Solution 2 スコープを切り替える 14
今回の例であれば、launchにCoroutineExceptionHandler を渡して ネストされたのCoroutineのエラーをまとめてしまう Solution 3 例外の集約 15
※以下は、supervisorScopeの例 Solution 4 Supervisionを導入 16
まとめ 17 これからネスト状態でasyncを扱うときは... 1. withContextを使う 2. Suspend関数に切り出す 3. 例外の集約 4.
Supervisionの導入 辺りを検討できると良いかも...そして...
まとめ 18 Release Note は、しっかり読みましょう!!! (自戒)
Reference 今回の発表の不明点は、以下でほぼ解消されます 19 ◦ Kotlin Coroutines 0.30.2のExceptionが伝わる仕組み <https://qiita.com/takahirom/items/2846caa1d51e868ef88b> ◦ Kotlin
Coroutine 1.0.0までに夏から変わったところ <http://sys1yagi.hatenablog.com/entry/2018/12/08/181232>
THANKS! You can find me at: Twitter : URI -
@yuyuyuyuyuri Pokemon GO : 05URI28 - 0188 7196 1789 20