早上一早起床，吃完早餐之後正愁今天不知道要寫什麼主題，無意中發現在2011年5~6月時Teddy寫了一系列的「Checked or unchecked exceptions」文章。這系列的文章還有兩篇沒完成，今天就來接這條斷掉的尾巴。
隔了快一年九個月，連Teddy自己都忘了之前寫些什麼。先幫鄉民們複習一下前三集的內容。
《Checked or unchecked exceptions (1)》：這一篇介紹Java語言的checked和unchecked exception的用途以及設計者所賦予這兩種例外類別的語意。在本篇文末Teddy留下了四個有待回答的問題。
今天要談的是第二個問題：
既然checked exception要符合handle-or-declare rule，但是鄉民們既不知道如何handle，也不明白如何declare。Exception這麼多，怎麼處理？那就亂處理啊！所以程式中經常可以看到catch and ignore（exception被捕捉且被忽略）或是blindly declare（盲目地將所有發生的checked exception都宣告在method上面繼續往外丟）。
上面這段話所描述的問題又可以細分為以下兩個子問題，今天先談第一個子問題：
Teddy在《Checked or unchecked exceptions (2)》提到過，在程式中收到一個例外的時候，要考慮下列幾個因素才能決定要如何設計處理例外：
不知如何處理例外，通常是上述這五個因素沒有弄清楚所導致的。例如，請問在程式中收到一個IOExceptione該如何處理？答案是：不知道。因為當程式捕捉到IOException的時候，只知道Exception Type這個資訊。再進一步探討，IOException是Java內建的checked exception，從語意上來說代表一種可復原的錯誤（recoverable error）。上面這五個因素只得其二，所以還是無法決定要如何設計例外處理程式。
以上內容在《Checked or unchecked exceptions (2)》有較為詳細的說明，鄉民們可參考之。不知如何處理例外的問題根源Teddy再強調一次，就是要同時考慮Exception Type、Recoverability、Application Context、Robustness Level、Exception Handling Policy這五個因素，缺一不可。
本篇需要「複習」的資訊有點多，怕鄉民們腦袋overflow今天就先寫到這裡，關於「如何宣告例外」留待下集待續。最後補充說明一點，「C.C. Agile 」二月份聚會Teddy要分享的內容就是從這一系列文章中所擷取出來的。由於活動場地有限，對此主題有興趣但沒有報到名的鄉民們，可參考搞笑談軟工部落格上的本系列文章（Teddy內心獨白：當然還聽本人解釋藥效更佳啊 ）。
友藏內心獨白：今天是西洋情人節，有人說情人節和清明節一樣，不是送吃就是送花。好強的抽象化能力啊 。