|
三.關于異常捕獲機制
雖然我們已經很辛苦了,但是仍然有很多原因使代碼運行失敗,如引用null引用、索引越界、內存溢出、類型轉換失敗等等。這就需要我們的代碼有足夠的容錯能力,在代碼運行失敗時,及時、主動的處理這些異常。
● 機制分析
.NET 中基本的異常捕獲與處理機制是由try…catch…finally塊來完成的,它們分別完成了異常的監測、捕獲與處理工作。一個try塊可以對應零個或多個catch塊,可以對應零個或一個finally塊。不過沒有catch的try似乎沒有什么意義,如果try對應了多個catch,那么監測到異常后,CLR會自上而下搜索catch塊的代碼,并通過異常過濾器篩選對應的異常,如果沒有找到,那么CLR將沿著調用堆棧,向更高層搜索匹配的異常,如果已到堆棧頂部依然沒有找到對應的異常,就會拋出未處理的異常了,這時catch塊中的代碼并不會被執行。所以距離try最近的catch塊將最先被遍歷到。
以下代碼:

try
{
Convert.ToInt32("Try");
}
catch (FormatException ex1)
{
string CatchFormatException = "CatchFormatException";
}
catch (NullReferenceException ex2)
{
string CatchNullReferenceException = "CatchNullReferenceException";
}
finally
{
string Finally = "Finally";
}
NET技術:.Net Discovery系列之-深入理解平臺機制與性能影響(下),轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。