tag:blogger.com,1999:blog-1298974142445162186.post4655121374037603236..comments2024-03-19T15:58:12.198+08:00Comments on 搞笑談軟工: 敏捷式例外處理設計 (4):我到底哪裡做錯之 nested try blockTeddy Chenhttp://www.blogger.com/profile/02066842119056439711noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-1298974142445162186.post-38344469109051512992010-08-24T17:04:43.494+08:002010-08-24T17:04:43.494+08:00終於找到『Finally Clause小叮嚀』的相關網誌。那天聽學長再說的時候,我就覺得,好像有在哪...終於找到『Finally Clause小叮嚀』的相關網誌。那天聽學長再說的時候,我就覺得,好像有在哪裡看到一模一樣的說法,果然,還是學長說得,而且這麼早就說過一次了。Charleshttps://www.blogger.com/profile/00337808587732861064noreply@blogger.comtag:blogger.com,1999:blog-1298974142445162186.post-36207054382813753082010-03-18T18:43:10.268+08:002010-03-18T18:43:10.268+08:00Hi Chris:
感謝您的補充,關於您提到的 Comparison of Java and C ...Hi Chris:<br /><br />感謝您的補充,關於您提到的 Comparison of Java and C Sharp 這篇文章 Teddy 之前也有看過,使用 using 的確可以避免在 finally clause 出現 nested try block 的問題 。由於文章的用意主要是要說明 nested try block 是一個 bad smell, 所以一定要想辦法生一個例子出來,很自然的就拿 Java 來當例子。由於 Java 區分 checked, unchecked exceptions, 所以有一些 exception handling smells 在 Java 很容易看到,在其他語言就比較少。不過 C# 應該也是會有出現 nested try block 的機會,有時間 Teddy 再去找個例子。Teddy Chenhttps://www.blogger.com/profile/02066842119056439711noreply@blogger.comtag:blogger.com,1999:blog-1298974142445162186.post-51287193513628660462010-03-18T15:11:12.818+08:002010-03-18T15:11:12.818+08:00今天很巧看到 Comparison of Java and C Sharp http://en.wi...今天很巧看到 Comparison of Java and C Sharp http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java<br />搜尋 dispose 的第一處,有<br />using (StreamWriter file = new StreamWriter("test.txt"))<br />{<br /> file.Write("test");<br />}<br />這裡的 using 關鍵字,保證脫離 {} 時一定會執行 file.Dispose(),不管有沒有丟出例外。用這個寫法就可以避免使用 try/finally 了。ChrisTornghttps://www.blogger.com/profile/00210133992433000806noreply@blogger.comtag:blogger.com,1999:blog-1298974142445162186.post-5994470554530951772010-03-18T12:53:52.380+08:002010-03-18T12:53:52.380+08:00據我所了解,.NET 中的 Dispose() 方法,建議不要丟出任何 Exception。內建的函...據我所了解,.NET 中的 Dispose() 方法,建議不要丟出任何 Exception。內建的函式庫可能都有遵守這個方針,只要自己寫的也遵守,那麼就不必在 finally 中的清除動作再作 try/catch。ChrisTornghttp://christorng.ning.comnoreply@blogger.comtag:blogger.com,1999:blog-1298974142445162186.post-35174121454930192122010-03-17T22:32:10.210+08:002010-03-17T22:32:10.210+08:00謝謝糾正,已修改。謝謝糾正,已修改。Teddy Chenhttps://www.blogger.com/profile/02066842119056439711noreply@blogger.comtag:blogger.com,1999:blog-1298974142445162186.post-12381385418551850412010-03-17T09:17:08.620+08:002010-03-17T09:17:08.620+08:00> Java 的設計者有沒有想過IO 物件的 close() method 所丟出的 IOEx...> Java 的設計者有沒有想過IO 物件的 close() method 所丟出的 IOException 到底要如何處裡?<br /><br />兩眼開開準備投胎?!<br /><br />and 最後一個字打錯了,是處"理" ......Hahahahttps://www.blogger.com/profile/09505660649725512465noreply@blogger.com