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
JavaとKotlinで例外処理の相性が悪いなと思った瞬間(2023/09/29 Server...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
wkwkhautbois
September 29, 2023
Programming
0
860
JavaとKotlinで例外処理の相性が悪いなと思った瞬間(2023/09/29 Server-Side Kotlin Meetup vol.10 )
Server-Side Kotlin Meetup vol.10 登壇資料 (少しおまけつき)
wkwkhautbois
September 29, 2023
Tweet
Share
More Decks by wkwkhautbois
See All by wkwkhautbois
日付と闘う-和暦は難しい / vs Dates - Japanese Chronology is Difficult
wkwkhautbois
1
2.2k
Other Decks in Programming
See All in Programming
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
390
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
180
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.2k
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
580
株式会社 Sun terras カンパニーデック
sunterras
0
2k
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
220
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
960
Railsの気持ちを考えながらコントローラとビューを整頓する/tidying-rails-controllers-and-views-as-rails-think
moro
4
380
Codex の「自走力」を高める
yorifuji
0
960
15年目のiOSアプリを1から作り直す技術
teakun
1
610
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
210
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
The Spectacular Lies of Maps
axbom
PRO
1
590
It's Worth the Effort
3n
188
29k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
68
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
69
Speed Design
sergeychernyshev
33
1.6k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Deep Space Network (abreviated)
tonyrice
0
86
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Typedesign – Prime Four
hannesfritz
42
3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
61
52k
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
JavaとKotlinで例外処理の相性が悪いな と思った瞬間 by わくわく (シェルフィー株式会社 桑原大樹)
はじめに ◼ 桑原大樹(わくわく) ⚫ Twitter(X) @wkwk_hautbois ◼ シェルフィー株式会社で Kotlin +
Spring で開発してます (メンバー積極採用中です) https://hello.shelfy.co.jp/8d9cbc353fb3481a92738215efd55110
本日のテーマは Java ↔ Kotlin の呼び出しで 「検査例外」関連で ムムム..と思った点です
目次 ◆似た関数、異なる例外… ◆え、スローされるんだけど…? ◆見逃すと危ない:Springのトランザクション制御との相性
目次 ➢ 似た関数、異なる例外 ◆え、スローされるんだけど…? ◆見逃すと危ない:Springのトランザクション制御との相性
検査例外 ◼ Javaには検査例外という仕組みがある ⚫ スローされる例外が ある程度 認知できる Java Java とサブクラスは省略可(非検査例外)
Kotlinは見た目から例外の判断が難しい ◼ Kotlinの場合 ⚫ 検査例外がない( 節がない) ⚫ Javaのメソッド? Kotlinの拡張関数? そっくり
throws節が無いと 適切にcatchするの 大変じゃない? Kotlin Kotlin
目次 ◆似た関数、異なる例外 ➢ え、スローされるんだけど ? ◆見逃すと危ない: Springのトランザクション制御との相性
Kotlinではコンパイル結果にthrows節がつかない ◼ Kotlinはコンパイル結果にも は付かない ⚫ Kotlinからスローされる検査例外を Javaで しようとするとコンパイルエラーに Java これは困った
Javaでコンパイルを通すために ◼ をつけるとコンパイル結果に 節がつく ⚫ Javaからも認識できるように ライブラリ組むとき 忘れそう&大変 Kotlin
目次 ◆似た関数、異なる例外 ◆え、スローされるんだけど…? ➢ 見逃すと危ない:Springのトランザクション制御との相性
SpringFrameworkの ◼ デフォルトだと ⚫ 非検査例外はロールバックされる ⚫ 検査例外はコミットされる 検査例外に思想を持った ライブラリ/FWと相性が… Kotlin
で事故を起こさないために ◼ Issueで提起はされているが… ⚫ 4年間対応なかった ⚫ 今週(2023/09/25) 6.2.xマイルストーンに乗った https://github.com/spring-projects/spring-framework/issues/23473 1年以上先だろうけど…
まとめ ◼ Kotlin ↔ Java呼び出しで 検査例外と相性が悪いときがある ⚫ スローする例外の種類がわかりにくい ◦ 特にJavaとKotlinで似たメソッドを呼ぶときなど混乱しそう
⚫ Java→Kotlin呼び出し時はKotlin側でシグネチャに意識が必要 ◦ @throwsをつける必要あり ⚫ ライブラリ/FWの思想とマッチしない可能性が ◦ 代表例がSpringFrameworkのトランザクション制御
おまけ
(Lombok) と ◼ JavaでもLombokを使うと 検査例外を 節なしでスローできる ⚫ このときは 検査例外でもロールバックされる (※Spring
AOPのプロキシ実装に依存する) Java
◼ CGLibプロキシはKotlinかそれ以外かで処理が分岐する ⚫ 前頁の例は非検査例外にラップされるのでロールバック対象になる Java CglibAopProxy.java
例外処理に気をつけて Kotlinを楽しみましょう! シェルフィー株式会社で一緒に開発したい人を募集中です https://hello.shelfy.co.jp/8d9cbc353fb3481a92738215efd55110