您好,登錄后才能下訂單哦!
這篇文章主要介紹C#中異常處理的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
C#異常處理總結(jié)及簡單實例
一、異常處理的理解?
異常處理是指程序在運行過程中,發(fā)生錯誤會導致程序退出,這種錯誤,就叫做異常。
因此處理這種錯誤,就稱為異常處理。
二、異常處理如何操作?
C# 異常處理時建立在四個關(guān)鍵詞之上的:try、catch、finally 和 throw。
1、try:一個 try 塊標識了一個將被激活的特定的異常的代碼塊。后跟一個或多個 catch 塊。
2、catch:程序通過異常處理程序捕獲異常。catch 關(guān)鍵字表示異常的捕獲。
3、finally:finally 塊用于執(zhí)行給定的語句,不管異常是否被拋出都會執(zhí)行。
例如如果你打開一個文件,不管是否出現(xiàn)異常文件都要被關(guān)閉。
4、throw:當問題出現(xiàn)時,程序拋出一個異常。使用 throw 關(guān)鍵字來完成。
語法示例:
try { // 引起異常的語句 } catch( ExceptionName e1 ) { // 錯誤處理代碼 } catch( ExceptionName e2 ) { // 錯誤處理代碼 } catch( ExceptionName eN ) { // 錯誤處理代碼 } finally { // 要執(zhí)行的語句 }
三、C#中的異常類
C# 異常是使用類來表示的。C# 中的異常類主要是直接或間接地派生于System.Exception
(1).由System.SystemException派生的異常類型:
System.AccessViolationException 在試圖讀寫受保護內(nèi)存時引發(fā)的異常。
System.ArgumentException 在向方法提供的其中一個參數(shù)無效時引發(fā)的異常。
System.Collections.Generic.KeyNotFoundException 指定用于訪問集合中元素的鍵與集合中的任何鍵都不匹配時所引發(fā)的異常。
System.IndexOutOfRangeException 訪問數(shù)組時,因元素索引超出數(shù)組邊界而引發(fā)的異常。
System.InvalidCastException 因無效類型轉(zhuǎn)換或顯示轉(zhuǎn)換引發(fā)的異常。
System.InvalidOperationException 當方法調(diào)用對于對象的當前狀態(tài)無效時引發(fā)的異常。
System.InvalidProgramException 當程序包含無效Microsoft中間語言(MSIL)或元數(shù)據(jù)時引發(fā)的異常,這通常表示生成程序的編譯器中有bug。
System.IO.IOException 發(fā)生I/O錯誤時引發(fā)的異常。
System.NotImplementedException 在無法實現(xiàn)請求的方法或操作時引發(fā)的異常。
System.NullReferenceException 嘗試對空對象引用進行操作時引發(fā)的異常。
System.OutOfMemoryException 沒有足夠的內(nèi)存繼續(xù)執(zhí)行程序時引發(fā)的異常。
System.StackOverflowException 掛起的方法調(diào)用過多而導致執(zhí)行堆棧溢出時引發(fā)的異常。
(2).由System.ArgumentException派生的異常類型:
System.ArgumentNullException 當將空引用傳遞給不接受它作為有效參數(shù)的方法時引發(fā)的異常。
System.ArgumentOutOfRangeException 當參數(shù)值超出調(diào)用的方法所定義的允許取值范圍時引發(fā)的異常。
(3).由System.ArithmeticException派生的異常類型:
System.DivideByZeroException 試圖用零除整數(shù)值或十進制數(shù)值時引發(fā)的異常。
System.NotFiniteNumberException 當浮點值為正無窮大、負無窮大或非數(shù)字(NaN)時引發(fā)的異常。
System.OverflowException 在選中的上下文中所進行的算數(shù)運算、類型轉(zhuǎn)換或轉(zhuǎn)換操作導致溢出時引發(fā)的異常。
(4).由System.IOException派生的異常類型:
System.IO.DirectoryNotFoundException 當找不到文件或目錄的一部分時所引發(fā)的異常。
System.IO.DriveNotFoundException 當嘗試訪問的驅(qū)動器或共享不可用時引發(fā)的異常。
System.IO.EndOfStreamException 讀操作試圖超出流的末尾時引發(fā)的異常。
System.IO.FileLoadException 當找到托管程序卻不能加載它時引發(fā)的異常。
System.IO.FileNotFoundException 試圖訪問磁盤上不存在的文件失敗時引發(fā)的異常。
System.IO.PathTooLongException 當路徑名或文件名超過系統(tǒng)定義的最大長度時引發(fā)的異常。
(5).其他常用異常類型:
ArrayTypeMismatchException 試圖在數(shù)組中存儲錯誤類型的對象。
BadImageFormatException 圖形的格式錯誤。
DivideByZeroException 除零異常。
DllNotFoundException 找不到引用的dll。
FormatException 參數(shù)格式錯誤。
MethodAccessException 試圖訪問私有或者受保護的方法。
MissingMemberException 訪問一個無效版本的dll。
NotSupportedException 調(diào)用的方法在類中沒有實現(xiàn)。
PlatformNotSupportedException 平臺不支持某個特定屬性時拋出該錯誤。
四、示例
class MyExceptionTest { static double SafeDivision(double x, double y) { if (y == 0) throw new System.DivideByZeroException(); return x / y; } static void Main() { double a = 98, b = 0; double result = 0; try { result = SafeDivision(a, b); Console.WriteLine("{0} divided by {1} = {2}", a, b, result); } catch (DivideByZeroException e) { Console.WriteLine("Attempted divide by zero."); } } }
以上是“C#中異常處理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。