電子課件本章常見錯(cuò)誤_第1頁
電子課件本章常見錯(cuò)誤_第2頁
電子課件本章常見錯(cuò)誤_第3頁
電子課件本章常見錯(cuò)誤_第4頁
電子課件本章常見錯(cuò)誤_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本章常見錯(cuò)誤

本講大綱:1、所有異常都使用try…catch語句捕獲的問題支持網(wǎng)站:2、在try語句中使用return,finally語句會(huì)不會(huì)執(zhí)行所有異常都使用try…catch語句捕獲的問題(1)

開發(fā)應(yīng)用程序的過程中檢測代碼可能發(fā)生的錯(cuò)誤并進(jìn)行正確處理是必需的,理想情況下,應(yīng)用程序中每行代碼都按預(yù)想的運(yùn)行,要用到的每種資源總是可以利用。但是,在現(xiàn)實(shí)世界中卻沒有那么順利,程序設(shè)計(jì)人員可能會(huì)犯錯(cuò),網(wǎng)絡(luò)連接可能會(huì)中斷,數(shù)據(jù)服務(wù)器可能會(huì)停止運(yùn)行,資源可能找不到。總之,編寫的代碼必須能夠檢測出類似這些錯(cuò)誤并采取相應(yīng)的對(duì)策。

.NET框架中提供了一種被稱作結(jié)構(gòu)化異常處理(SEH)的機(jī)制,用于處理代碼可能出現(xiàn)的各種錯(cuò)誤,這就是try…catch語句。使用try將您認(rèn)為可能會(huì)生成異常的代碼塊括起來,使用catch將發(fā)生異常時(shí)要執(zhí)行的代碼括起來,如下面的結(jié)構(gòu)化異常處理代碼:objectobj;DateTimedt;try{obj=newobject();dt=(DateTime)obj;}catch(InvalidCastExceptionex)//無效類型轉(zhuǎn)換異常{Console.WriteLine(ex.Message);}catch(InvalidOperationExceptionex)//無效操作異常{Console.WriteLine(ex.Message);}catch//其他異常{Console.WriteLine("程序運(yùn)行出錯(cuò)!");}finally//必須執(zhí)行的代碼塊{dt=Convert.ToDateTime("1900-01-01");}所有異常都使用try…catch語句捕獲的問題(2)說明:上面代碼中,將object類型強(qiáng)制轉(zhuǎn)換為DateTime類型時(shí)會(huì)引發(fā)無效類型轉(zhuǎn)換異常(InvalidCastException),這時(shí)會(huì)執(zhí)行catch(InvalidCastExceptionex)代碼塊中的代碼。.NET中使用結(jié)構(gòu)化異常處理的原則是在所有可能出錯(cuò)的地方都要加上結(jié)構(gòu)化異常處理代碼,因?yàn)檫@樣能夠保證在錯(cuò)誤發(fā)生時(shí),正確釋放所有資源。但是盲目地針對(duì)每種異常都使用異常處理是不必要的,因?yàn)楫惓L幚硎且环N耗費(fèi)資源的機(jī)制,每當(dāng)異常被拋出時(shí),異常堆棧都將被建立,異常信息將被加載,通常這些工作成本相對(duì)較高。例如,上面代碼所示的類型轉(zhuǎn)換異常處理方式可使用is或as語句代替,代碼如下:objectobj;DateTimedt;obj=newobject();if(objisDateTime){dt=(DateTime)obj;}else{Console.WriteLine("類型轉(zhuǎn)換無效!");}在try語句中使用return,finally語句會(huì)不會(huì)執(zhí)行(1)

try語句塊主要用來捕獲程序運(yùn)行時(shí)的異常,catch語句塊用來處理異常,或者說將發(fā)生異常時(shí)要執(zhí)行的代碼括起來,但無論是否有異常,最后一定會(huì)執(zhí)行finally語句塊中的代碼。那么在try語句塊中使用return語句,程序會(huì)出現(xiàn)什么樣的情況呢?如下面的示例。在try語句塊中使用return語句,代碼如下:staticvoidMain(string[]args){try{inti=5;objectobj=i;//整型變量裝箱操作

if(objisint)//判斷類型

{intj=(int)obj;//拆箱操作

Console.WriteLine("類型轉(zhuǎn)換成功!");return;//使用return語句

}else{Console.WriteLine("類型不正確!");}}catch(InvalidCastExceptionex)//這里是處理異常的語句塊

{Console.WriteLine(ex.Message);//輸出異常信息

}finally//finally語句

{Console.WriteLine("必須執(zhí)行finally語句塊");//若執(zhí)行finally語句,則輸出此信息

Console.Read();}}在try語句中使用return,finally語句會(huì)不會(huì)執(zhí)行(2)上面程序的運(yùn)行結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論