偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#異常機(jī)制的相關(guān)解釋

開發(fā) 后端
C#中的表達(dá)式為處理系統(tǒng)級(jí)別和應(yīng)用程序級(jí)別的錯(cuò)誤條件,提供了一個(gè)構(gòu)造的、統(tǒng)一的合類型安全的方法。C#異常機(jī)制與C++中的相當(dāng)相似,但是有一些重要的不同之處。

C#異常機(jī)制與C++中的相當(dāng)相似,但是有一些重要的不同之處:

◆在C#異常機(jī)制中,所有的異常必須用一個(gè)從System.Exception派生的類類型的實(shí)例表示。在C++中,任何類型的任何數(shù)值都可以用于表示異常。

◆在C#異常機(jī)制中,一個(gè)最后的塊(§錯(cuò)誤!未找到引用源。)可以被用來編寫在正常指向和異常條件下都可以執(zhí)行的中止代碼。如果沒有重復(fù)代碼,那樣的代碼在C++中很難寫。

◆在C#異常機(jī)制中,如溢出、被零除和空解除參照等系統(tǒng)級(jí)的異常會(huì)有被很好定義的異常類,并且應(yīng)用程序級(jí)別錯(cuò)誤條件等同。

1.1異常的產(chǎn)生異??梢杂脙煞N不同的方法拋出。

◆一個(gè)throw語句(§錯(cuò)誤!未找到引用源。)會(huì)直接無條件地拋出一個(gè)異常??刂撇粫?huì)接觸到緊跟在throw后面的語句。

◆當(dāng)操作符不能正常結(jié)束時(shí),在某種特殊情況下,在C#語句和表達(dá)式執(zhí)行的過程中產(chǎn)生的某種異常的條件產(chǎn)生一個(gè)異常。例如,一個(gè)整數(shù)除法操作(§錯(cuò)誤!未找到引用源。)在分母為零時(shí)拋出一個(gè)System.DivideByZeroException異常?!?6.4中給出了一個(gè)可以在這種方式下發(fā)生的各種異常的列表。

1.2System.Exception類類System.Exception似所有異常的基本類型。這個(gè)類有一些值得注意的屬性,這些屬性所有異常都有:

◆Message是一個(gè)只讀屬性,它是一個(gè)只讀屬性,可以包含一個(gè)可以被人讀的異常原因的描述。

◆InnerException是一個(gè)只讀屬性,它包含這個(gè)異常的“內(nèi)部異?!?。如果它不是null,就指出當(dāng)前的異常是作為對(duì)另外一個(gè)異常的回答而被拋出。產(chǎn)生當(dāng)前異常的異常可以在InnerException屬性中得到。

這些屬性的數(shù)值可以在System.Exception構(gòu)造函數(shù)中指定。

1.3異常怎樣被處理異常被try語句(§錯(cuò)誤!未找到引用源。)處理。

當(dāng)發(fā)生一個(gè)異常,系統(tǒng)就會(huì)查找離可以處理這個(gè)異常的語句最近的catch語句,并且有異常的運(yùn)行時(shí)類型決定。首先,當(dāng)前的方法是查找文字上很近,并且與try語句相關(guān)的catch語句會(huì)被按順序考慮。如果這樣做失敗了,就會(huì)查找調(diào)用try語句的方法和當(dāng)前的方法中文字接近的地方,這個(gè)try語句圍繞著對(duì)當(dāng)前方法調(diào)用的點(diǎn)。通過對(duì)與異常被拋出的運(yùn)行時(shí)類型的相同的類或基類的命名來進(jìn)行查找,這個(gè)查找一直進(jìn)行直到找到可以處理當(dāng)前的異常的catch語句為止。一個(gè)沒有對(duì)一個(gè)異常類命名的catch語句可以處理任何異常。

一旦找到匹配的catch語句,系統(tǒng)就被控制權(quán)交給catch語句的第一個(gè)語句。在這個(gè)catch語句開始執(zhí)行前,系統(tǒng)首先執(zhí)行與try語句相關(guān),而且比俘獲異常的語句嵌套更深的任何finally語句。

如果沒有找到匹配的catch語句,下面兩件事情中的一件就會(huì)發(fā)生:

◆如果對(duì)匹配的catch語句的查找找到了一個(gè)靜態(tài)構(gòu)造函數(shù)(§10.12)或靜態(tài)域初始化函數(shù),那么就會(huì)在引發(fā)對(duì)靜態(tài)構(gòu)造函數(shù)調(diào)用的地方拋出一個(gè)System.TypeInitializationException異常。TypeInitializationException的內(nèi)部異常包含最初拋出的異常。

◆如果對(duì)匹配的catch語句的查找找到了一個(gè)最初開始這個(gè)線程或程序的代碼,那么這個(gè)線程或程序的執(zhí)行就被中止。

1.4通用異常類下面的異常被某些C#操作拋出。

System.OutOfMemoryException

當(dāng)試圖通過new來分配內(nèi)存而失敗時(shí)拋出。

System.StackOverflowException

當(dāng)執(zhí)行棧被太多未完成的方法調(diào)用耗盡時(shí)拋出;典型情況是指非常深和很大的遞歸。

System.NullReferenceException

當(dāng)null引用在造成引用的對(duì)象被需要的情況下使用時(shí)拋出。

System.TypeInitializationException

當(dāng)一個(gè)靜態(tài)構(gòu)造函數(shù)拋出一個(gè)異常,并且沒有任何catch語句來俘獲它的時(shí)候拋出。

System.InvalidCastException

當(dāng)一個(gè)從基本類型或接口到一個(gè)派生類型的轉(zhuǎn)換在運(yùn)行時(shí)失敗時(shí)拋出。

System.ArrayTypeMismatchException

當(dāng)因?yàn)榇鎯?chǔ)元素的實(shí)例類型與數(shù)組的實(shí)際類型不匹配而造成象一個(gè)數(shù)組存儲(chǔ)失敗時(shí)拋出。

System.IndexOutOfRangeException

當(dāng)試圖通過一個(gè)比零小或者超出數(shù)組邊界的標(biāo)簽來索引一個(gè)數(shù)組時(shí)拋出。

System.MulticastNotSupportedException

當(dāng)試圖合并兩個(gè)非空代表失敗時(shí)拋出;因?yàn)榇眍愋蜎]有void返回類型。

System.ArithmeticException

一個(gè)異常的基類,它在算術(shù)操作時(shí)發(fā)生,如DivideByZeroException和OverflowException.

System.DivideByZeroException

當(dāng)試圖用整數(shù)類型數(shù)據(jù)除以零時(shí)拋出。

System.OverflowException

當(dāng)checked中的一個(gè)算術(shù)操作溢出時(shí)拋出。

【編輯推薦】

  1. 分析C#不安全代碼
  2. 淺析C#調(diào)用ImageAnimator
  3. C#連接Access、SQL Server數(shù)據(jù)庫
  4. 淺談C#固定的和活動(dòng)的變量
  5. 介紹C#中的值類型
責(zé)任編輯:彭凡 來源: blog.pfan.cn
相關(guān)推薦

2009-08-05 18:28:05

C#異常處理

2009-08-05 18:39:54

C#異常類

2009-08-05 18:09:17

C#異常處理機(jī)制

2009-09-02 14:00:34

C#文件處理

2025-01-09 12:01:53

2009-08-06 10:55:46

C#代碼解釋器

2009-08-06 14:08:08

C#語言異常處理

2009-08-31 17:26:32

C#異常處理

2009-08-21 08:41:44

C#反射

2009-08-28 10:22:47

C# DLLImpor

2009-08-26 09:36:03

C#泛型

2009-09-03 11:00:29

C#反射機(jī)制

2009-08-07 14:00:06

C#路徑

2009-09-01 16:14:08

C# Socket類

2009-08-13 14:59:00

C#數(shù)據(jù)訪問層

2011-08-05 09:33:30

Func局部變量作用域

2011-07-14 11:08:30

C#繼承

2011-06-08 10:06:32

C#

2024-04-16 12:18:05

編程異常處理錯(cuò)誤返回

2009-08-06 15:26:18

C#異常類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)