所以當我在VBA/VB6中玩過很多時,我從來沒有深入過詳細的錯誤處理。大多數情況下,如果遇到用戶錯誤(例如他們的某些輸入未通過某種驗證測試),則彈出帶有一些錯誤信息和關鍵(或警告)圖標的MsgBox(),並安全地中止該代碼,並希望他們得到了線索。用戶錯誤拋出異常?或者更好地設計自定義錯誤消息框架?
在.NET中,我的閱讀基本上指出了異常作爲錯誤處理中的最終結果。在我看來,如果你知道一個用戶可能搞砸的代碼點,你應該試着用try ... catch塊(用於數據轉換之類的東西)來捕獲它,或者標準的如果... ...。 ..ELSE構造其他的東西,然後在需要時拋出一個新的異常。
從某種意義上講,不是拋出一個本質上是強制性程序崩潰的異常(當然,你可以選擇繼續)?或者是特別針對諸如數據轉換錯誤和其他「不應該發生的事情」這樣的事情設計的例外,並且恢復MsgBox()和朋友對次要用戶擰緊的使用?
考慮一下你只有一個TextBox的情況,該TextBox只能接受數字數據(或者只是一組特定的字符)。除了可以限制該字段的其他技巧(讓我們假設它是自由形式的,以編程方式),在每次鍵入無效字符時拋出新的異常,或者即使未發生錯誤檢查,也似乎有點浪費直到他們按下提交按鈕(如在網頁上)。在這種情況下彈出一個MsgBox()似乎更加理智。
那麼什麼是直接的異常和投入新的用戶錯誤?如果你的程序也暴露了一個程序框架,那麼怎麼樣?對編程功能之一的錯誤使用絕對看起來像是我的新異常領域。
這是有道理的。只是在我閱讀的大部分時間裏,有時會建議拋出異常是錯誤處理的主要方式(儘管從來沒有直接說過)。我沒有遇到過在.NET中提供其他替代方法的文檔。我懷疑這是因爲許多作者可能認爲一般的.NET程序員已經熟悉處理錯誤。所以這給了我一些確認。 – Kumba 2010-11-10 19:24:01