盡可能的用校驗代碼而避免使用異常如果你知道一個可避免的條件可能會出現那就讓它避免比如在執行任何操作以前檢查空值(VB裡是Nothing)這樣可以避免使用異常以及性能問題
以下代碼
double result =
;
try
{
result = firstVal/secondVal;
}
catch(System
Exception e)
{
// handling the zero divided exception
}
應該替換成
double result =
;
if(secondVal != null && secondVal >
)
{
result = firstVal/secondVal;
}
else
{
result = System
Double
NaN;
}
不要為沒有必要的情況(原文reasons)拋出異常再次拋出異常的開銷和實例化一個新異常的開銷一樣的大同時再次拋出異常使程序調試工作增加難度比如
try
{
// Perform some operations
in case of throw an exception…
}
catch (Exception e)
{
// Try to handle the exception with e
throw;
}
推薦的處理不同的錯誤的不同的方法是實現一系列的catch塊這看起來好像沒有什麼但可以讓你的異常處理從特殊走向普通比如捕獲一個和文件有關的異常明顯要比捕獲一個FileNotFoundException DirectoryNotFoundException SecurityException IOException UnauthorizedAccessException甚至最後的基類Exception好的多
ADONET 的錯誤應該通過 SqlException 或 OleDbException來處理
使用ConnectionState屬性來檢查連接是否可用要比異常處理好的多
要常使用Try/FinallyFinally提供了關閉連接的機會Using語句可以達到同樣的效果
用指定的處理程序來處理異常在一些情況下如果你知道一些可能的異常那就用相應的異常處理類比如
try
{}
catch(SqlException sqlexp) // specific exception handler
{}
catch(Exception ex) // Generic exception handler
{}
你的異常處理架構應該可以探測異常並在內部將其覆蓋(或是)使用其它異常將其替換或是為監視系統而記錄和報告這些信息
推薦大家使用 Microsofts patterns & practices 團隊 提供的Exception Management Application Block這是一個簡單且可擴展的框架用於記錄異常信息到事件文件中你可以自定義它把日志記錄到其它數據源中同時不影響你系統的代碼Exception Management Application Block都是一些由patterns & practices團隊開發的很好的代碼並且已經徹底地被Microsoft labs給測試過了
[] []
From:http://tw.wingwit.com/Article/program/net/201311/15370.html