異常處理 Exception

2021-09-08 01:15:43 字數 2340 閱讀 5009

一、異常類

1、在c#中所有的異常都是使用乙個異常型別的示例物件表示的,這些異常型別都是繼承自system.exception型別,或者直接使用system.exception型別的例項物件;

2、在c#中,位於finally塊中的**可以保證不管**是正常結束,還是進入異常處理**塊,其中的語句均會被執行。

system.exception類有一些屬性值得注意,這些屬性被所有從此類派生的異常類共享,這些屬性是:

message:乙個唯讀字串,此屬性為當前的異常提供了描述性資訊;

innerexception:乙個exception型別的唯讀屬性,如果它的值不為null,則可以通過它的值獲取導致當前異常的異常例項;反之,如果其值為null,則表示當前異常不是由其他異常引發的。

stacktrace:乙個唯讀字串,此屬性描述了異常發生時呼叫堆疊的內容,其中首先顯示最近的方法呼叫。

二、丟擲異常

當程式有錯誤的時候可以建立乙個描述該錯誤的異常物件,然後用throw關鍵字丟擲異常物件,丟擲的異常物件將被當前**的更上層**所捕獲,或者不處理直接丟擲,或者乾脆不予捕獲。那麼該異常將一直向上傳遞,直到有人捕獲並處理它。

class program

public static void dosomething(string name)}}

三、捕獲異常

可以使用try/catch來捕獲並選擇是否處理異常,捕獲了異常並非一定要處理異常,還可以將異常轉換為另乙個異常後再丟擲,或者僅僅是記錄異常的資訊。

要記住,始終必須按照從最特定到最不特定(從具體到一般)的順序對catch塊中處理的異常進行排序,這個原則可以保證在將某個特定異常傳遞給更一般的異常的catch塊之前處理該異常。

try/catch塊有三種形式:try-catch、try-finally、try-catch-finally,不帶有catch或finally塊的try語句將導致編譯器錯誤。

try語句中的**是可能丟擲異常的**,catch塊捕捉某種特定的異常並加以處理。這些catch塊可以有多個,並且catch塊可以串聯在一起,如果存在多個catch塊,那麼計算順序是從頂部到底部。但是對於所引發的每個異常,都只執行乙個catch塊。

1、好的程式設計的做法是捕獲特定型別的異常,而不是捕獲更常規的異常。

2、如果捕獲特定型別的catch塊捕獲異常的基型別catch塊同時存在,則前者要位於後者之前,否則將無法通過編譯。

class program

public static void dosomething(string name)

}catch (argumentexception ex)

catch (exception ex)

finally}}

四、自定義的異常類

要建立使用者自定義異常類,需要遵循以下幾點

2、使用"exception"這個詞作為自定義的異常名稱的字尾。

3、至少提供三個公共函式。

4、乙個不包含引數的預設建構函式。

5、乙個可以包含異常訊息的建構函式,只有乙個引數:message。

6、乙個可以包含異常訊息,以及引發該異常的異常引用的建構函式,這兩個引數分別是message和innerexception。

public oneexception(string message) : base(message){}

public oneexception(string message,system.exception innerexception) : base(message,innerexception){}

}五、異常處理原則

1、盡量由程式自動處理異常。當異常發生時,程式在捕獲後應該先嘗試處理異常,如果錯誤得以排序,那麼程式可以恢復正常,而不是每次捕獲異常就立刻通知使用者來處理,或者僅僅把異常資訊記錄下來。例如網路傳送發生連線錯誤,應該先重連幾次,然後再通知使用者處理。

2、限制異常範圍,應該盡量地減少縮小異常處理的範圍,如果只需要檢測某一行**可能發生異常,就不要把整段的**都放進try語句塊中。

3、應該捕獲更具體的異常。盡量避免直接捕獲exception異常。

4、盡可能在上層捕獲並處理異常。

5、應該將異常資訊儲存在日誌中。

突然回憶起上次面試的一段**:

class program

public static string getname()

catch (exception ex)

finally}}

留意到,幾時是沒丟擲異常同時return了也執行了finally裡面的**。

Exception異常處理

1.exception 前言 在ios裡對異常的處理及捕獲,並沒有其它語言裡那麼常見,相信很多ios程式設計師都知道,更多的時候是對記憶體的的檢測與分析,檢測相關記憶體方面的問題。捕獲後傳送至伺服器,並且友好提示使用者錯誤,或則直接回滾到使用者操作前,阻止應用程式的崩潰。2.exception處理 ...

異常處理 Exception(三)

最近有點事,把這個系列給落下了,給大家道個歉,這裡還要感謝我的老婆,謝謝她一直對我的支援 系列回顧 1 異常處理 exception 一 2 異常處理 exception 二 通知方式 說明 email 這是最常見也是最方便的一種通知方式。優點 使用簡單 缺點 需要依賴於smtp伺服器等 sms 這...

PDO異常處理Exception

異常處理exception是指在try.catch時發生異常時的處理手段,通常異常處理都是直接丟擲提醒即可。而設定提醒的手段有三種設定方式 1 預設模式 主要依賴於系統提供的errorcode和errorinfo屬性實現 2 警報模式 為pdo設定setattribute pdo attr errm...