日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

【基础】C#异常处理的总结

發(fā)布時(shí)間:2023/12/10 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【基础】C#异常处理的总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、異常處理的理解?

異常處理是指程序在運(yùn)行過程中,發(fā)生錯(cuò)誤會導(dǎo)致程序退出,這種錯(cuò)誤,就叫做異常。

因此處理這種錯(cuò)誤,就稱為異常處理。

二、異常處理如何操作?

C# 異常處理時(shí)建立在四個(gè)關(guān)鍵詞之上的:try、catch、finally 和 throw。

1、try:一個(gè) try 塊標(biāo)識了一個(gè)將被激活的特定的異常的代碼塊。后跟一個(gè)或多個(gè) catch 塊。

2、catch:程序通過異常處理程序捕獲異常。catch 關(guān)鍵字表示異常的捕獲。

3、finally:finally 塊用于執(zhí)行給定的語句,不管異常是否被拋出都會執(zhí)行。

例如如果你打開一個(gè)文件,不管是否出現(xiàn)異常文件都要被關(guān)閉。

4、throw:當(dāng)問題出現(xiàn)時(shí),程序拋出一個(gè)異常。使用 throw 關(guān)鍵字來完成。

語法示例:

try

{

// 引起異常的語句

}

catch( ExceptionName e1 )

{

// 錯(cuò)誤處理代碼

}

catch( ExceptionName e2 )

{

// 錯(cuò)誤處理代碼

}

catch( ExceptionName eN )

{

// 錯(cuò)誤處理代碼

}

finally

{

// 要執(zhí)行的語句

}

三、C#中的異常類

C# 異常是使用類來表示的。C# 中的異常類主要是直接或間接地派生于System.Exception

(1).由System.SystemException派生的異常類型:

System.AccessViolationException在試圖讀寫受保護(hù)內(nèi)存時(shí)引發(fā)的異常。

System.ArgumentException在向方法提供的其中一個(gè)參數(shù)無效時(shí)引發(fā)的異常。

System.Collections.Generic.KeyNotFoundException指定用于訪問集合中元素的鍵與集合中的任何鍵都不匹配時(shí)所引發(fā)的異常。

System.IndexOutOfRangeException訪問數(shù)組時(shí),因元素索引超出數(shù)組邊界而引發(fā)的異常。

System.InvalidCastException因無效類型轉(zhuǎn)換或顯示轉(zhuǎn)換引發(fā)的異常。

System.InvalidOperationException當(dāng)方法調(diào)用對于對象的當(dāng)前狀態(tài)無效時(shí)引發(fā)的異常。

System.InvalidProgramException當(dāng)程序包含無效Microsoft中間語言(MSIL)或元數(shù)據(jù)時(shí)引發(fā)的異常,這通常表示生成程序的編譯器中有bug。

System.IO.IOException發(fā)生I/O錯(cuò)誤時(shí)引發(fā)的異常。

System.NotImplementedException在無法實(shí)現(xiàn)請求的方法或操作時(shí)引發(fā)的異常。

System.NullReferenceException嘗試對空對象引用進(jìn)行操作時(shí)引發(fā)的異常。

System.OutOfMemoryException沒有足夠的內(nèi)存繼續(xù)執(zhí)行程序時(shí)引發(fā)的異常。

System.StackOverflowException掛起的方法調(diào)用過多而導(dǎo)致執(zhí)行堆棧溢出時(shí)引發(fā)的異常。

(2).由System.ArgumentException派生的異常類型:

System.ArgumentNullException當(dāng)將空引用傳遞給不接受它作為有效參數(shù)的方法時(shí)引發(fā)的異常。

System.ArgumentOutOfRangeException當(dāng)參數(shù)值超出調(diào)用的方法所定義的允許取值范圍時(shí)引發(fā)的異常。

(3).由System.ArithmeticException派生的異常類型:

System.DivideByZeroException試圖用零除整數(shù)值或十進(jìn)制數(shù)值時(shí)引發(fā)的異常。

System.NotFiniteNumberException當(dāng)浮點(diǎn)值為正無窮大、負(fù)無窮大或非數(shù)字(NaN)時(shí)引發(fā)的異常。

System.OverflowException在選中的上下文中所進(jìn)行的算數(shù)運(yùn)算、類型轉(zhuǎn)換或轉(zhuǎn)換操作導(dǎo)致溢出時(shí)引發(fā)的異常。

(4).由System.IOException派生的異常類型:

System.IO.DirectoryNotFoundException當(dāng)找不到文件或目錄的一部分時(shí)所引發(fā)的異常。

System.IO.DriveNotFoundException當(dāng)嘗試訪問的驅(qū)動器或共享不可用時(shí)引發(fā)的異常。

System.IO.EndOfStreamException讀操作試圖超出流的末尾時(shí)引發(fā)的異常。

System.IO.FileLoadException當(dāng)找到托管程序卻不能加載它時(shí)引發(fā)的異常。

System.IO.FileNotFoundException試圖訪問磁盤上不存在的文件失敗時(shí)引發(fā)的異常。

System.IO.PathTooLongException當(dāng)路徑名或文件名超過系統(tǒng)定義的最大長度時(shí)引發(fā)的異常。

(5).其他常用異常類型:

ArrayTypeMismatchException試圖在數(shù)組中存儲錯(cuò)誤類型的對象。

BadImageFormatException圖形的格式錯(cuò)誤。

DivideByZeroException除零異常。

DllNotFoundException找不到引用的dll。

FormatException參數(shù)格式錯(cuò)誤。

MethodAccessException試圖訪問私有或者受保護(hù)的方法。

MissingMemberException訪問一個(gè)無效版本的dll。

NotSupportedException調(diào)用的方法在類中沒有實(shí)現(xiàn)。

PlatformNotSupportedException平臺不支持某個(gè)特定屬性時(shí)拋出該錯(cuò)誤。

四、示例

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.");

}

}

}

公眾號原文

總結(jié)

以上是生活随笔為你收集整理的【基础】C#异常处理的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。