Soumettre la recherche
Mettre en ligne
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
•
11 j'aime
•
6,834 vues
teddysoft
Suivre
討論Java語言中checked與unchecked exceptions使用上的問題
Lire moins
Lire la suite
Design
Technologie
Actualités & Politique
Signaler
Partager
Signaler
Partager
1 sur 30
Recommandé
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
Recommandé
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
ここが良かったDatadog
ここが良かったDatadog
tyamane
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
Yuto Komai
本当にあったRailsの怖い話
本当にあったRailsの怖い話
Yuto Komai
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
Marp Tutorial
Marp Tutorial
Rui Watanabe
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
増田 亨
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
Toshihiro Nakamura
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
whywaita
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
gree_tech
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
ssuser070fa9
SMTPのSTARTTLSにおけるTLSバージョンについて
SMTPのSTARTTLSにおけるTLSバージョンについて
Sparx Systems Japan
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
重構三兩事
重構三兩事
teddysoft
Contenu connexe
Tendances
ここが良かったDatadog
ここが良かったDatadog
tyamane
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
Yuto Komai
本当にあったRailsの怖い話
本当にあったRailsの怖い話
Yuto Komai
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
Marp Tutorial
Marp Tutorial
Rui Watanabe
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
増田 亨
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
Toshihiro Nakamura
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
whywaita
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
gree_tech
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
ssuser070fa9
SMTPのSTARTTLSにおけるTLSバージョンについて
SMTPのSTARTTLSにおけるTLSバージョンについて
Sparx Systems Japan
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
UnityTechnologiesJapan002
Tendances
(20)
ここが良かったDatadog
ここが良かったDatadog
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
本当にあったRailsの怖い話
本当にあったRailsの怖い話
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
Marp Tutorial
Marp Tutorial
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
SMTPのSTARTTLSにおけるTLSバージョンについて
SMTPのSTARTTLSにおけるTLSバージョンについて
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
En vedette
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
重構三兩事
重構三兩事
teddysoft
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
teddysoft
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
teddysoft
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
teddysoft
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
teddysoft
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
teddysoft
軟體開發成功的秘訣
軟體開發成功的秘訣
teddysoft
Behavior Driven Development on C.C.Agile
Behavior Driven Development on C.C.Agile
Sam Huang
7.error management and exception handling
7.error management and exception handling
Deepak Sharma
Kanban in Oracle Applications
Kanban in Oracle Applications
mgarg82
Do Languages Matter?
Do Languages Matter?
Bruce Eckel
Seeing system patterns in organizational coaching
Seeing system patterns in organizational coaching
Jen-Chieh Ko
Exception Handling Java
Exception Handling Java
ankitgarg_er
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
teddysoft
HowTo Design your kanban board
HowTo Design your kanban board
Jo Seibert
Specification by Example
Specification by Example
Declan Whelan
O2 c and p2p cycles
O2 c and p2p cycles
gsriramsunil
En vedette
(20)
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
重構三兩事
重構三兩事
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
軟體開發成功的秘訣
軟體開發成功的秘訣
Behavior Driven Development on C.C.Agile
Behavior Driven Development on C.C.Agile
7.error management and exception handling
7.error management and exception handling
Kanban in Oracle Applications
Kanban in Oracle Applications
Do Languages Matter?
Do Languages Matter?
Seeing system patterns in organizational coaching
Seeing system patterns in organizational coaching
Exception Handling Java
Exception Handling Java
Bdd atdd sbe_tdd_ddd_published
Bdd atdd sbe_tdd_ddd_published
HowTo Design your kanban board
HowTo Design your kanban board
Specification by Example
Specification by Example
O2 c and p2p cycles
O2 c and p2p cycles
Plus de teddysoft
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9
teddysoft
Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-preview
teddysoft
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
teddysoft
漫談重構
漫談重構
teddysoft
Pattern based problem solving-published
Pattern based problem solving-published
teddysoft
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
teddysoft
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
teddysoft
當Scrum遇到Pattern
當Scrum遇到Pattern
teddysoft
說出一嘴好設計 1.1
說出一嘴好設計 1.1
teddysoft
跟著Teddy讀Pattern
跟著Teddy讀Pattern
teddysoft
洗白你的軟體架構
洗白你的軟體架構
teddysoft
如何學好設計模式
如何學好設計模式
teddysoft
Plus de teddysoft
(12)
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-preview
Dci vs aggregate_dddtw_2021-0.3-preview
DDD + Clean Architecture: 從需求到實作
DDD + Clean Architecture: 從需求到實作
漫談重構
漫談重構
Pattern based problem solving-published
Pattern based problem solving-published
Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
當Scrum遇到Pattern
當Scrum遇到Pattern
說出一嘴好設計 1.1
說出一嘴好設計 1.1
跟著Teddy讀Pattern
跟著Teddy讀Pattern
洗白你的軟體架構
洗白你的軟體架構
如何學好設計模式
如何學好設計模式
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
1.
Teddy Chen teddy@teddysoft.tw
Feb. 21 2013
2.
Copyright@2013 Teddysoft
3.
系統不穩定
3
4.
4
5.
5
6.
6
7.
Problem
7
8.
Problem
8
9.
Copyright@2013 Teddysoft
10.
• Correctness
– Contract Specification(超出範圍) • Robustness – Exception Handling Copyright@2013 Teddysoft
11.
Copyright@2013 Teddysoft
12.
Checked Exception
Throwable Unchecked Exception Exception Error RuntimeException Copyright@2013 Teddysoft
13.
declare handle
Copyright@2013 Teddysoft
14.
Copyright@2013 Teddysoft
15.
Copyright@2013 Teddysoft
16.
• Checked exceptions
for recoverable conditions – 打死不知道要如何去recover 任何東東? class FileService { … backup () { FileService fs = new public copy (String s) FileService(); throws IOException { try { … fs.copy(“a.txt”); if (error) } throw new catch (IOException e){ IOException(“reason”); // exception handling code } } } } Copyright@2013 Teddysoft
17.
1 2 3
Copyright@2013 Teddysoft
18.
1
2 3 Copyright@2013 Teddysoft
19.
• 我就是不喜歡checked exception,咬我啊! •
例如,Standard Widget Toolkit (SWT, Eclipse的UI元件)只使用unchecked exception: – SWTException用來表示可修復的SWT錯誤。 – SWTError則用來表示不可修復的錯誤。 Copyright@2013 Teddysoft
20.
Your application Spring
DataAccessException unchecked Framework checked Java SQLException HibernateException technology- technology- specific specific Copyright@2013 Teddysoft
21.
Copyright@2013 Teddysoft
22.
•
Exception Type • Recoverability • Application Context • Robustness Level – G1: Error-reporting (錯誤回報) – G2: State-recovery (狀態回復) – G3: Behavior-recovery (行為回復) • Exception Handling Policy Copyright@2013 Teddysoft
23.
Copyright@2013 Teddysoft
24.
Copyright@2013 Teddysoft
25.
練習1: 如果Accepter收到一
Message Presentation Layer E'' 5. report 個 IOException,鄉民們第 一個反應是什麼? AppWin Application E' 4. wrap Layer GameServer Service Layer 3. recover E 2. rethrow 練習2: 如果Accepter收到 Acceptor 一個 RuntimeException, 鄉民們第一個反應是什麼? JVM E 1. throw Copyright@2013 Teddysoft
26.
Message
練習3: 如果Accepter收到一 Presentation E'' 5. report 個 IOException,鄉民們該 Layer AppWin 如何處置? Application E' 4. wrap Layer GameServer 3. recover Service Layer E 2. rethrow 練習4: 如果Accepter收到 Acceptor 一個 RuntimeException, JVM E 1. throw 鄉民們該如何處置? Copyright@2013 Teddysoft
27.
Message
練習5: 如果Accepter收到一 Presentation E'' 5. report 個 IOException,鄉民們該 Layer AppWin 如何處置? Application E' 4. wrap Layer GameServer 3. recover 練習6: 如果GameServer收 Service Layer E 2. rethrow Acceptor 到 IOException ,鄉民們該 如何處置? JVM E 1. throw Copyright@2013 Teddysoft
28.
Message Presentation Layer
E'' 5. report 練習7: Accepter的RL要 AppWin E' 4. wrap 設為多少? Application Layer GameServer 3. recover Service Layer E 2. rethrow 練習8: GameServer的RL Acceptor 要設為多少? JVM E 1. throw Copyright@2013 Teddysoft
29.
Message Presentation Layer
E'' 5. report 練習9: Acceptor這一層 AppWin 有哪些policy可用? Application E' 4. wrap Layer GameServer 3. recover Service Layer E 2. rethrow Acceptor 練習10: GameServer這 JVM 一層有哪些policy可用? E 1. throw Copyright@2013 Teddysoft
30.
Copyright@2013 Teddysoft
30