国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#異常處理總結(jié)及簡(jiǎn)單實(shí)例

2019-10-29 21:09:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#異常處理總結(jié)及簡(jiǎn)單實(shí)例

一、異常處理的理解?

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

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

二、異常處理如何操作?

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

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

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

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

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

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

語(yǔ)法示例:

try{  // 引起異常的語(yǔ)句}catch( ExceptionName e1 ){  // 錯(cuò)誤處理代碼}catch( ExceptionName e2 ){  // 錯(cuò)誤處理代碼}catch( ExceptionName eN ){  // 錯(cuò)誤處理代碼}finally{  // 要執(zhí)行的語(yǔ)句}

三、C#中的異常類

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

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

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

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

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

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

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

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

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

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

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

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

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

System.StackOverflowException 掛起的方法調(diào)用過(guò)多而導(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)值為正無(wú)窮大、負(fù)無(wú)窮大或非數(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ū)動(dòng)器或共享不可用時(shí)引發(fā)的異常。

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

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

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

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

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

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

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

DivideByZeroException 除零異常。

DllNotFoundException 找不到引用的dll。

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

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

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

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

PlatformNotSupportedException 平臺(tái)不支持某個(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.");    }  }}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西峡县| 蚌埠市| 游戏| 台南县| 祁阳县| 淮滨县| 延庆县| 五河县| 英德市| 搜索| 巴楚县| 海安县| 汶上县| 广丰县| 潮州市| 申扎县| 龙陵县| 绵竹市| 新泰市| 博湖县| 鲁山县| 深水埗区| 文安县| 泸州市| 龙里县| 蒲江县| 积石山| 新宾| 石台县| 启东市| 双流县| 徐闻县| 涞源县| 清原| 剑河县| 扎赉特旗| 黔江区| 温宿县| 宁海县| 石门县| 铜川市|