EA&UML日拱一卒--活動圖::異常
UML和很多語言一樣,都有異常處理機制。當系統發生不正常的情況時,處理機制會中斷正常的處理流程,然後由內向外尋找異常處理器並激活它。
語義
異常表示一種非正常情況的發生阻止了正常的執行過程。它通常是系統底層在應對執行過程中出現的故障時所產生的。這種場景下的異常處理是一種被動的活動;也有另外一種場景,作為錯誤處理的一種方式,異常由一個動作(RaiseExceptionAction)顯式的拋出。
示例
這裡仍然以解一元二次方程的流程舉例。
內部的活動SolveEquationImpl中故意製造了兩個會發生異常的場景:
1.a!=0,delta <0
2.a==0,b==0
然後在SolveEquationImpl的處理外面增加了一個異常處理器,並將二者用中斷流(閃電形箭頭)連接起來。可以看下面的放大圖。
這 種連接方式就表示,如果SolveEquationImpl活動中發生了MathException類型的異常,該處理器就會被激活。這裡還有一個默 契:Create NullSolution擁有和它所保護SolveEquationImpl活動同樣的輸出參數(類型,數量),當異常處理結束後,它的輸出會替代受保護 的SolveEquationImpl的輸出。只有這樣後續處理才會像異常根本就沒有發生一樣繼續進行。
需要補充說 明的是如果發生的不是MathException類型(或派生類型)的異常,處理機制會繼續在本層次中尋找合適的異常處理器,如果還是沒有找到,就會到上 一個運行層次(這裡就是SolveEquation的層次)尋找,如果系統的最外層還是沒有找到的話,系統可能崩潰。
畫法
增加終端流和異常處理器都是通過拖動活動圖工具欄上的對應圖標到活動圖中來實現的。
異常處理器
中斷流
最後
比較一下SolveEquationImpl和下面的例子,應該可以發現處理簡化了不少。
同時,因為可以選擇適當的層次進行異常處理,這也增加了靈活性。
以上就是今天的文章,如果它能給您帶來些許收穫,歡迎點贊並推薦給您的朋友!
閱讀更多更新文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※設計模式剖析
※狀態圖::面向對象的另一種理解
※EA&UML日拱一卒--序列圖(Sequence Diagram)::並行和臨界區
※(翻譯)14.1 Summary
※活動圖::Structural Feature Actions(續)