Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaとKotlinで例外処理の相性が悪いなと思った瞬間(2023/09/29 Server...
Search
wkwkhautbois
September 29, 2023
Programming
910
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaとKotlinで例外処理の相性が悪いなと思った瞬間(2023/09/29 Server-Side Kotlin Meetup vol.10 )
Server-Side Kotlin Meetup vol.10 登壇資料 (少しおまけつき)
wkwkhautbois
September 29, 2023
More Decks by wkwkhautbois
See All by wkwkhautbois
日付と闘う-和暦は難しい / vs Dates - Japanese Chronology is Difficult
wkwkhautbois
1
2.6k
Other Decks in Programming
See All in Programming
JRuby: Past, Present, and Future
headius
0
220
ジョジョの世界をXRで再現する
mofurune
0
140
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
2
3.7k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
21
21k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
340
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
310
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
380
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
490
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
390
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
Navigating Team Friction
lara
192
16k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
How to make the Groovebox
asonas
2
2.5k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Accessibility Awareness
sabderemane
1
240
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
390
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
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