回答
try/catch塊不會產生很大的性能開銷。
投擲異常確實有一些開銷,但這不應該是一個問題 - 異常應該是例外。
本文將進入更詳細一點如何try/catch塊來實現和他們的運行成本:http://www.programmersheaven.com/user/pheaven/blog/175-Do-trycatch-blocks-hurt-runtime-performance/
我認爲以下報價總結了異常精美
如果你擔心關於您使用它們的異常性能錯誤
如果您將它們用作打算使用的例外,它們將不會對應用程序產生顯着的性能影響。這是出於特殊情況。
有很多關於異常性能的不良信息。如果你可以發佈你正在閱讀的文章的鏈接,這將是非常好的,所以我們可以看到他們爲什麼認爲這會是一個問題。這可能是他們涵蓋了一個不適用於大多數情況的角落案例。
下面是從TheDailyWTF創作者有關的異常開銷的好文章:
http://weblogs.asp.net/alex_papadimoulis/archive/2005/03/29/396141.aspx
從文章中拋出1000個例外採取一個簡單的例子:
Console.WriteLine(Now().ToString("hh:mm:ss.fffffff"))
DoNothingImportant()
ThrowRecursiveExceptions(1000)
Console.WriteLine(Now().ToString("hh:mm:ss.fffffff"))
Output:
10:57:38.0252702
10:58:39.9205680
你可以看到它大約需要2分鐘,但因爲它們只能用於特殊行爲,我不會擔心。此外,當你可以立即修復它時,通過使用捕獲和日誌記錄發現的真正「異常」異常對你來說將是無限的價值,而不是在靜默地嘗試失敗時嘗試ghost調試問題。
(我不直接回答你的問題深表歉意)
的try/catch異常塊,建議在你想可能趕上的地方,但少見,發生故障或異常行爲,比如讀取文件或查詢數據庫。您可能還想將try/catch塊放在函數無法履行合約的地方。
使用斷言來捕獲永遠不會發生的錯誤或缺陷。也使用斷言作爲自我記錄代碼。 (見Code Complete 2nd Edition中的防禦性編程章節)。
- 1. 在模塊中發生.NET異常(TypeLoadException)
- 2. 異步.NET異常
- 3. .NET WCF異常
- 4. .NET OutOfMemory異常
- 5. 在.NET異常
- 6. 正確使用.NET異常
- 7. 如何使用.NET 2.0在使用塊中捕獲異常?
- 8. 異常塊
- 9. .net安全異常
- 10. .NET異常太多
- 11. .NET TransactionScope的異常
- 12. SoapHttpClientProtocol.Invoke方法的異常.NET web服務
- 13. 異常從使用塊
- 14. jQuery塊UI異常
- 15. 碼塊C++異常
- 16. 異常EOleSysError模塊
- 17. Dot Net異常:空引用和參數null異常
- 18. .NET內存異常異常 - 使用1.3GB但安裝了16GB
- 19. Active Directory異常asp .net
- 20. .NET多線程和異常
- 21. .NET異常窗口API
- 22. .NET異常的GeoIP服務
- 23. .NET異常,並表現
- 24. .NET MVC控制器異常
- 25. 捕捉SOAP異常.NET
- 26. .NET WebService的超時異常
- 27. 異常在.net中冒泡
- 28. .net序列異常錯誤
- 29. Mysql .NET 3.5的TypeLoad異常
- 30. .NET C/C++ P/INVOKE異常
這是什麼文章? – itsmatt 2009-06-11 00:58:04
檢查這一個出http://stackoverflow.com/questions/307610/how-do-exceptions-work-behind-the-scenes-in-c – bobobobo 2009-06-11 02:16:02