一、異常類
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留意到,幾時是沒丟擲異常同時return了也執行了finally裡面的**。public static string getname()
catch (exception ex)
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...