.Net Framework異常具體概念深入剖析
任何一個(gè)程序開發(fā)都不能保證是萬無一失,不會(huì)出現(xiàn)錯(cuò)誤的。那么這就需要再程序中添加異常處理的功能。我們?cè)谶@里就為大家詳細(xì)介紹一下有關(guān).Net Framework異常的具體操作方法,希望對(duì)大家有所幫助。#t#
異常對(duì)象都包含一個(gè)描述字符串和一個(gè)堆棧蹤跡。微軟規(guī)定所有和CLS兼容的編程語言都必須能夠拋出并捕獲那些繼承自System.Exception的異常類型。
- void SomeMethod() {
- try {
- //需要.Net Framework異?;謴?fù)和資源清理的操作代碼;
或可能會(huì)拋出異常的代碼 - //單獨(dú)一個(gè)try塊是沒有任何意義的
- }
- catch(異常篩選器exception filter) {
- //異?;謴?fù)代碼 ,出現(xiàn)異常時(shí)需要執(zhí)行的響應(yīng)代碼
- //異常篩選器本身是一個(gè)類型;代碼執(zhí)行時(shí)是
自上而下搜索catch塊的,應(yīng)將更具體的異常
放在上面,否則會(huì)產(chǎn)生個(gè)錯(cuò)誤 - }
- finally {
- //包含確保要執(zhí)行的代碼,一般是資源清理代碼
- //不管線程是否拋出異常,該代碼塊中的代碼都能確保被執(zhí)行
- //一個(gè)try塊并非必須要有一個(gè)finally塊相
關(guān)聯(lián),因?yàn)橛袝r(shí)候try塊中的代碼并不需要任何
清理工作;但一個(gè)try塊最多只能有一個(gè)相關(guān)聯(lián)的finally塊 - }
- }
.Net Framework異常不是錯(cuò)誤,它是對(duì)程序接口隱含假設(shè)的一種違反。這里的程序接口是指屬性的數(shù)據(jù)類型,方法的參數(shù),返回值等。通過拋出異常,一個(gè)方法可以通知它的調(diào)用程序它所做的假設(shè)被違反了。
如何正確使用.Net Framework異常?
a. 避免過多的finally塊;C#提供了lock和using語句,是編譯器自動(dòng)產(chǎn)生try塊和finally塊,其中finally塊就是清理代碼,它們編譯產(chǎn)生的結(jié)果是一樣的。
b. 避免直接用System.Exception異常篩選器捕獲所有異常,因?yàn)橄到y(tǒng)隨時(shí)可能拋出StackOverflowException或OutOfMemoryException
c. 當(dāng)異常無法修復(fù)時(shí),回滾部分完成的操作。