首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 異常處理常見誤區與效能深度分析:IL 層面驗證 Try-Catch 開銷

     編輯:關於.NET

釐清 catch(Exception e) { throw e; } 非錯誤用法(可重設堆疊追蹤定位點),但需避免 catch {} 吞沒嚴重異常(StackOverflowException、OutOfMemoryException)。

效能迷思:Try-Catch 無異常時開銷極低

對比 IL 代碼:

  • Test1 (含 try-catch):多 8 位元組儲存 catch 區塊資訊。
  • Test2 (無 try-catch):正常流程指令相同。

實測 100 萬次呼叫 × 10 輪,差異 < 0.0001%。結論:無異常時 try-catch 幾乎零成本。

有異常時代價高昂

拋出/處理異常消耗大量資源與時間。異常僅用於真正異常情況,不可用於流程控制。

錯誤範例:Int32.Parse 配合 try-catch 處理使用者輸入 → 應用 Int32.TryParse(.NET 2.0+)。

Finally 執行保證

finally 區塊始終執行(含 return、throw 情況)。

思考題:

int a = 2;
try { int i = Int32.Parse("s"); }
catch { a = 1; return; }
finally { a = 3; }
// 執行後 a = 3
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved