2014-09-20 78 views
-4

什麼是異常冒泡,並且在實時使用這個概念的同時,還有什麼需要使用異常冒泡? 我非常困惑與冒泡的例外,爲什麼因爲我經歷了很多網站沒有給出明確的想法,並且我對差異是什麼也有疑問。 b/w捕捉;抓住e;異常在.net中冒泡

+0

我仍然懷疑我們會在哪裏使用這個概念,是好還是壞? – VinodKumar 2014-09-20 17:59:10

回答

3

如果您在代碼中未捕獲到異常,它將傳播給調用者。通常情況下,這絕對沒問題:你應該捕獲所有的異常 - 事實上,對異常最常見的反應是「讓它不斷升級」。由於這個原因,finally是更常見的catch在很多代碼(資源xleanup) - 雖然using甚至比finally更普遍。

至於catch vs catch(Exception e) - 第二種形式捕獲特定的一組異常類型(在本例中爲Exception和任何子類),並提供對異常進行檢查的權限。這可能是因爲您想要檢查異常的特定屬性(例如,SQL錯誤代碼),或者因爲您想使用原始異常引發自定義異常作爲InnerException。例如:

catch(AwesomeException e) { 
    if(e.Something) 
     throw new CrazyException(" oops", e); 
    throw; // else rethrow the original 
} 

注意,在.NET 1.1中,它也有可能是一些例外Exception秒 - 在C++中,你可以扔什麼 - 然而,.NET 2及以上的修復此(除非你明確地禁用它)通過在包裝中包裝非Exception異常。

+0

如果你有一個代碼,與我分享,也給一個實時的例子,這樣我就可以使用它 – VinodKumar 2014-09-20 15:55:24

+0

請解釋我仍然不清楚異常冒泡 – VinodKumar 2014-09-20 16:08:48

+0

@Vinod Foo()調用Bar()調用Blap() 。 Blap拋出異常。 Bar不會嘗試捕捉異常(或捕獲它並重新拋出異常) - 所以Foo會得到異常。一直到有人處理這個異常,或者它到達一個線程的頂部,並且終止這個過程。 – 2014-09-20 16:23:19