jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

             假設我的團隊正在開發一個庫程序,由于某種原因,現在希望能夠得到所有最外層 API 所拋出的所有異常的類型、各自的信息、并且能夠附上各種異常所出現的原因和解決辦法。如果開發過程中內部使用的是 Unchecked Exception ,那么對于這個任務簡直就麻煩了。沒辦法,開發人員一個個的自我進行檢查然后統計吧,但是往往這樣的統計總會有漏網之魚?,F在的 MSDN 中的異常信息糟糕的很,最底層的公有庫的異常信息內容可能完整一點,但是上層的庫的異常信息糟糕的不行,根本不能完整的報全所有出錯的可能性。

          你可以想象的出,一個庫函數的異常信息不完整,對于他的用戶來說,是多么不友好的事情。假設 MSDN File.Open() 會拋出 IOException ,你的程序就很難想到很規矩的對 IOException 做了 catch ,然后提示用戶檢查相應位置的文件是否存在 / 被打開等。別指望 MSDN 的那些信息能夠對終端用戶有多大的幫助,太多不懂計算機的人在傻呆呆的握著鼠標了。再加上 MicroSoft 的提示信息本身就存在著“答非所問”,“莫名其妙”的事情,用戶看到這些情況就更不知道怎么解決問題了。再加上自己的應用程序中會彈出一個個“蹩腳”的運行時錯誤的錯誤框,真的不是一個很如意的創作。

          ? ? ? ? 但是,如果使用的是 Checked Exception ,這時候編譯器會強迫你的外部接口的異常相當的完整,最起碼可以做到比 MSDN 的異常類型齊整。

          ?

          ?

          ?

          ?

          posted on 2006-06-03 21:22 jinfeng_wang 閱讀(1967) 評論(5)  編輯  收藏 所屬分類: java 、Thinking 、view 、.Net

          評論

          # re: Checked Exception VS UnChecked Excetion (續2) 2006-06-03 22:32 quitgame
          Checked Exception 確實有很多好處,但需要開發人員具有對異常比較深刻的理解,否則寫出的代碼可能是 throws Exception catch(Exception) 這種,還不如沒有,  回復  更多評論
            

          # re: Checked Exception VS UnChecked Excetion (續2) 2006-06-04 00:06 CowNew開源團隊
          總感覺.net的異常機制不如java的好,異常不捕獲也照樣能編譯,好可怕。  回復  更多評論
            

          # re: Checked Exception VS UnChecked Excetion (續2) 2006-06-08 09:47 denis長明
          @CowNew開源團隊
          Java 里面的異常是分成兩種的了,正是標題所說的checked 和 unchecked的 checked的都是從Exception繼承過來的,只要在程序里面throw了就一定要catch,否則編譯通過不了, 還有一種繼承自RuntimeException 這里面的異常可以隨便throw, 可以不用catch, 現在很多框架都設計成unchecked的了, 比如很多數據庫操作, SqlException 很多人catch了后只是log了一下, 根本就沒有做任何的處理,這樣的異常不catch也罷,為了給客戶一個友好的界面,你可以在框架最外層catch一下Throwable然后轉換成對應的錯誤信息.   回復  更多評論
            

          # re: Checked Exception VS UnChecked Excetion (續2) 2006-06-08 23:11 jinfeng_wang
          "SqlException 很多人catch了后只是log了一下, 根本就沒有做任何的處理"

          你只是假設了某些用戶的習慣,但是對于某一部分的用戶,他想做一些特殊的處理操作,那么單純的SqlException能夠滿足要求么?
          其次,如果用戶的習慣都改過來了,那么SqlClient如何應對這樣的要求?SqlClient重新實現??
          再次,我們現在談的不局限于SqlException,我們討論的是方法學,程序設計的方法學。
          這個討論我會繼續下去的。
          請記住一點,現在很多人已經用“Exception”做為程序流程的控制依據,因為CheckedException是要求客戶端捕捉的,而用返回值是不能達到控制用戶程序的,所以很多時候CheckedException用來做“程序流程控制”也是合理的。

            回復  更多評論
            

          # re: Checked Exception VS UnChecked Excetion (續2) 2008-09-17 11:35 aaaa
          asdasd  回復  更多評論
            

          主站蜘蛛池模板: 阿瓦提县| 合江县| 峨眉山市| 黑河市| 三门县| 吴桥县| 会东县| 垣曲县| 霍山县| 丰顺县| 周至县| 交口县| 鄂伦春自治旗| 宁南县| 益阳市| 自治县| 瓮安县| 景宁| 尖扎县| 宜良县| 定安县| 内黄县| 南通市| 和硕县| 商水县| 阳城县| 华蓥市| 昔阳县| 德州市| 竹北市| 仙桃市| 彩票| 蒙山县| 英吉沙县| 渑池县| 万州区| 云南省| 阳原县| 辽中县| 马边| 吉木萨尔县|