日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#異常機制的相關(guān)解釋

C#異常機制與C++中的相當相似,但是有一些重要的不同之處:

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

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

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

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

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

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

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

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

◆InnerException是一個只讀屬性,它包含這個異常的“內(nèi)部異常”。如果它不是null,就指出當前的異常是作為對另外一個異常的回答而被拋出。產(chǎn)生當前異常的異??梢栽贗nnerException屬性中得到。

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

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

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

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

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

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

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

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

System.OutOfMemoryException

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

System.StackOverflowException

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

System.NullReferenceException

當null引用在造成引用的對象被需要的情況下使用時拋出。

System.TypeInitializationException

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

System.InvalidCastException

當一個從基本類型或接口到一個派生類型的轉(zhuǎn)換在運行時失敗時拋出。

System.ArrayTypeMismatchException

當因為存儲元素的實例類型與數(shù)組的實際類型不匹配而造成象一個數(shù)組存儲失敗時拋出。

System.IndexOutOfRangeException

當試圖通過一個比零小或者超出數(shù)組邊界的標簽來索引一個數(shù)組時拋出。

System.MulticastNotSupportedException

當試圖合并兩個非空代表失敗時拋出;因為代表類型沒有void返回類型。

System.ArithmeticException

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

System.DivideByZeroException

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

System.OverflowException

當checked中的一個算術(shù)操作溢出時拋出。


文章名稱:C#異常機制的相關(guān)解釋
當前URL:http://m.5511xx.com/article/ccodsjd.html