5/11/2006

読み物小舖 -- Pratical JAVA - 實踐16 : 認識Exception Control Flow機制



Exception Control Flow, 這是SCJP必考的東西.

Exception是JAVA語言一個強大且實用的特性, 但也給JAVA增加了複雜性.
大多數的工程師只知道Exception要去catch, 但是接著要做什麼就不知道了.
其實要抓哪些Exception來做處理, 或者如何正確的使用Exception, 前題都是必須要充分了解Exception.

這一個topic, 主要是讓大家複習JAVA Exception的機制與運作原理.

Exception的行為類似goto述句(但JAVA內並沒有提供goto述句, 卻有把goto當作關鍵字並束之高閣).
一旦某個Exception發生, control flow立刻轉移到下面三者之一:
1. catch block
2. finally block
3. calling method(呼叫端)
這是Exceptino所表現的goto行為, 了解這個是很重要的, SCJP必考.

當程式在try區段內拋出異常, 會發生怎樣的事情呢?
1. 如果同時存在catch block與finally block, control flow將會先轉移到catch block, 再轉移到finally block.
2. 如果沒有catch block, control flow會轉移到finally block.

Exception內另一個很重要的觀念, 不能對Exception視而不見. 但這取決於看待問題的角度. 將於實踐17討論之.
但是如果對Exception導致的事情懵懵懂懂, 會導致程式行為錯誤, 而且難以擴展和維護.

在專案內, 我想, 除了定義哪些Exception要被處理之外, 另外也要制定LOG的機制, 這樣才不會老是發生那種catch之後什麼都不做, 結果debug到昏倒的情形.

2 意見:

老農 提到...

一直學java,但是一直學不好 ~ 怎麼辦

匿名 提到...

老農兄..
以您目前的地位而言,
只要找到可以幫您寫好Java的廠商,
然後每天照吃飯時間釘它,
比自己學java效果更好,
如果想賺外快,
不妨考慮.net,簡單快速收錢易啊~~
還有另外一種方法,您起個案,
發包出來給偶們,我再回包一部份給您..
哈...我常這樣教壞客戶吶~~