SlideShare a Scribd company logo
Teddy Chen
teddy@teddysoft.tw
   Feb. 21 2013
Copyright@2013 Teddysoft
系統不穩定




        3
4
5
6
Problem




          7
Problem




          8
Copyright@2013 Teddysoft
• Correctness
  – Contract Specification(超出範圍)


• Robustness
  – Exception Handling




                 Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
Checked
Exception
                  Throwable
                                               Unchecked
                                               Exception


             Exception              Error


            RuntimeException


                    Copyright@2013 Teddysoft
declare




handle
         Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
• 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
1




2




3


    Copyright@2013 Teddysoft
1




                           2




                                   3




Copyright@2013 Teddysoft
• 我就是不喜歡checked exception,咬我啊!
• 例如,Standard Widget Toolkit (SWT,
  Eclipse的UI元件)只使用unchecked
  exception:
 – SWTException用來表示可修復的SWT錯誤。
 – SWTError則用來表示不可修復的錯誤。




             Copyright@2013 Teddysoft
Your
application


Spring
                  DataAccessException                  unchecked
Framework



                                                       checked
   Java       SQLException        HibernateException



                  technology-
                   technology-
                  specific
                   specific
                     Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
•   Exception Type
•   Recoverability
•   Application Context
•   Robustness Level
    – G1: Error-reporting (錯誤回報)
    – G2: State-recovery (狀態回復)
    – G3: Behavior-recovery (行為回復)
• Exception Handling Policy
                  Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
Copyright@2013 Teddysoft
練習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
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
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
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
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
Copyright@2013 Teddysoft   30

More Related Content

PDF
[教材] 例外處理設計與重構實作班201309
PDF
Jbatch実践入門 #jdt2015
PPTX
Unit Testing Android Applications
PDF
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
PDF
Presentacion OpenShift by RedHat
PDF
Atomicity In Redis: Thomas Hunter
PDF
Clean code
PPTX
Scaling production grade EKS Multi-Cluster environments using GitOps
[教材] 例外處理設計與重構實作班201309
Jbatch実践入門 #jdt2015
Unit Testing Android Applications
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
Presentacion OpenShift by RedHat
Atomicity In Redis: Thomas Hunter
Clean code
Scaling production grade EKS Multi-Cluster environments using GitOps

What's hot (20)

PDF
Design Patterns這樣學就會了:入門班 Day1 教材
PDF
iOSにおけるパフォーマンス計測
PPTX
Behavior driven development (bdd)
PPT
Continuous integration
PDF
Cracking OCA and OCP Java 8 Exams
PDF
Applications secure by default
PDF
Spring Caches with Protocol Buffers
PDF
YAGNI Principle and Clean Code
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
PDF
Developing Faster with Swagger
PDF
Google Cloud でアプリケーションを動かす.pdf
PDF
SRE 讀書會 - 導讀:第一章
PPTX
3.Java EE7 徹底入門 CDI&EJB
PPTX
End to end test automation with cypress
PDF
Real Life Clean Architecture
PDF
PDF
Ruby Rails 老司機帶飛
PDF
Reactor 3.0, a reactive foundation for java 8 and Spring
PPTX
Unit Testing And Mocking
Design Patterns這樣學就會了:入門班 Day1 教材
iOSにおけるパフォーマンス計測
Behavior driven development (bdd)
Continuous integration
Cracking OCA and OCP Java 8 Exams
Applications secure by default
Spring Caches with Protocol Buffers
YAGNI Principle and Clean Code
徳丸本に載っていないWebアプリケーションセキュリティ
Developing Faster with Swagger
Google Cloud でアプリケーションを動かす.pdf
SRE 讀書會 - 導讀:第一章
3.Java EE7 徹底入門 CDI&EJB
End to end test automation with cypress
Real Life Clean Architecture
Ruby Rails 老司機帶飛
Reactor 3.0, a reactive foundation for java 8 and Spring
Unit Testing And Mocking
Ad

Viewers also liked (20)

PDF
模式入門第一堂課: 30分鐘寫出一個模式
PDF
重構三兩事
PDF
Java 例外處理壞味道與重構技術
PDF
好設計如何好 @ C.C. Agile #14
PDF
那一夜我們說Pattern design patterns 20周年-published
PDF
從五個小故事看敏捷開發精神
PPTX
了解模式讓你更敏捷 (C C Agile 活動分享)
PPTX
[演講] Scrum導入經驗分享
PDF
軟體開發成功的秘訣
PPTX
Behavior Driven Development on C.C.Agile
PPTX
7.error management and exception handling
PDF
Kanban in Oracle Applications
PPT
Do Languages Matter?
PDF
Seeing system patterns in organizational coaching
PPT
Exception Handling Java
PDF
Bdd atdd sbe_tdd_ddd_published
PDF
HowTo Design your kanban board
KEY
Specification by Example
DOCX
O2 c and p2p cycles
ODP
Kanban Board Examples
模式入門第一堂課: 30分鐘寫出一個模式
重構三兩事
Java 例外處理壞味道與重構技術
好設計如何好 @ C.C. Agile #14
那一夜我們說Pattern design patterns 20周年-published
從五個小故事看敏捷開發精神
了解模式讓你更敏捷 (C C Agile 活動分享)
[演講] Scrum導入經驗分享
軟體開發成功的秘訣
Behavior Driven Development on C.C.Agile
7.error management and exception handling
Kanban in Oracle Applications
Do Languages Matter?
Seeing system patterns in organizational coaching
Exception Handling Java
Bdd atdd sbe_tdd_ddd_published
HowTo Design your kanban board
Specification by Example
O2 c and p2p cycles
Kanban Board Examples
Ad

More from teddysoft (12)

PDF
Dci vs aggregate_dddtw_2021-0.3-16-9
PDF
Dci vs aggregate_dddtw_2021-0.3-preview
PDF
DDD + Clean Architecture: 從需求到實作
PDF
漫談重構
PDF
Pattern based problem solving-published
PDF
Agile the timeless way of software development-2019-05-17-v1.2-published
PDF
從Bowling Game Kata看敏捷開發
PDF
當Scrum遇到Pattern
PDF
說出一嘴好設計 1.1
PDF
跟著Teddy讀Pattern
PDF
洗白你的軟體架構
PDF
如何學好設計模式
Dci vs aggregate_dddtw_2021-0.3-16-9
Dci vs aggregate_dddtw_2021-0.3-preview
DDD + Clean Architecture: 從需求到實作
漫談重構
Pattern based problem solving-published
Agile the timeless way of software development-2019-05-17-v1.2-published
從Bowling Game Kata看敏捷開發
當Scrum遇到Pattern
說出一嘴好設計 1.1
跟著Teddy讀Pattern
洗白你的軟體架構
如何學好設計模式

搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題

  • 4. 4
  • 5. 5
  • 6. 6
  • 10. • Correctness – Contract Specification(超出範圍) • Robustness – Exception Handling Copyright@2013 Teddysoft
  • 12. Checked Exception Throwable Unchecked Exception Exception Error RuntimeException Copyright@2013 Teddysoft
  • 13. declare handle 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
  • 22. Exception Type • Recoverability • Application Context • Robustness Level – G1: Error-reporting (錯誤回報) – G2: State-recovery (狀態回復) – G3: Behavior-recovery (行為回復) • Exception Handling Policy 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