2016-09-22 20 views
6

在尋找null檢查vs捕獲NullReferenceException時,我遇到了這個問題。NullReferenceException如何比CLR中的其他異常更昂貴?

捕獲null取消引用是CLR可以執行的最昂貴的操作之一,如果您的代碼拋出大量的NullReferenceExceptions,這可能會對性能造成嚴重影響。測試無效並做一些其他事情(甚至拋出異常!)是一個更便宜的操作。

這裏是我找到它的問題的鏈接。 When is handling a null pointer/reference exception preferred over doing a null check?

我想知道如何捕捉NullReferenceException比空檢查和拋出異常更昂貴。

[無法評論,因爲聲譽數量不足的存在]

回答

8

這裏的關鍵不在於一個NullReferenceException比任何其他異常昂貴。拋出異常的成本來自於展開堆棧,並且更多地取決於調用結構而不是特定的異常。我相信,文件試圖說明的一點是,首先安全防範例外的成本要低於投放時處理它的成本。