• c# 異常處理機制

    2016-07-06

    異常語句

    try:包含正被異常保護的代碼,即表示對哪一段代碼進行異常檢測。

    catch:異常處理部分,可以有一個或多個。

    finally:所有情況下都要執行的代碼,無論異常是否發生。

    即使try中有return,finally語句也會先執行再返回。

    try { 	int a=0; } catch { 	... } finally { 	... }

    異常類

    .Net 的BCL定義了許多異常類,代表發生的異常的類型,并有針對性的處理語句。

    catch{} 一般catch語句:能接受所有異常,但不能確定異常類型;

    catch(ExceptionType) {}特定catch語句:可以匹配參數類或其子類的異常;

    catch(ExceptionType  instID) {}帶對象的特定catch語句:除了匹配參數類外,還給出了異常實例。


    搜索調用棧

    若異常發生在try語句之外,或try語句沒有匹配的異常處理程序,則系統會順序尋找調用棧。
    此種情況下:
            異常發生在try之外(try無匹配catch子句)——搜索調用棧,尋找匹配的封裝try語句,否則結束程序——準備執行搜索到的catch語句——回到棧頂端,執行封裝try的所有finally語句,彈出棧幀——執行匹配的catch語句——執行finally——在try之后繼續。

    可以用throw顯式地拋出異常,即自定義異常類型。



    天堂网