




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本章常見錯(cuò)誤
本講大綱:1、所有異常都使用try…catch語句捕獲的問題支持網(wǎng)站:2、在try語句中使用return,finally語句會不會執(zhí)行所有異常都使用try…catch語句捕獲的問題(1)
開發(fā)應(yīng)用程序的過程中檢測代碼可能發(fā)生的錯(cuò)誤并進(jìn)行正確處理是必需的,理想情況下,應(yīng)用程序中每行代碼都按預(yù)想的運(yùn)行,要用到的每種資源總是可以利用。但是,在現(xiàn)實(shí)世界中卻沒有那么順利,程序設(shè)計(jì)人員可能會犯錯(cuò),網(wǎng)絡(luò)連接可能會中斷,數(shù)據(jù)服務(wù)器可能會停止運(yùn)行,資源可能找不到??傊?,編寫的代碼必須能夠檢測出類似這些錯(cuò)誤并采取相應(yīng)的對策。
.NET框架中提供了一種被稱作結(jié)構(gòu)化異常處理(SEH)的機(jī)制,用于處理代碼可能出現(xiàn)的各種錯(cuò)誤,這就是try…catch語句。使用try將您認(rèn)為可能會生成異常的代碼塊括起來,使用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í)會引發(fā)無效類型轉(zhuǎn)換異常(InvalidCastException),這時(shí)會執(zhí)行catch(InvalidCastExceptionex)代碼塊中的代碼。.NET中使用結(jié)構(gòu)化異常處理的原則是在所有可能出錯(cuò)的地方都要加上結(jié)構(gòu)化異常處理代碼,因?yàn)檫@樣能夠保證在錯(cuò)誤發(fā)生時(shí),正確釋放所有資源。但是盲目地針對每種異常都使用異常處理是不必要的,因?yàn)楫惓L幚硎且环N耗費(fèi)資源的機(jī)制,每當(dāng)異常被拋出時(shí),異常堆棧都將被建立,異常信息將被加載,通常這些工作成本相對較高。例如,上面代碼所示的類型轉(zhuǎn)換異常處理方式可使用is或as語句代替,代碼如下:objectobj;DateTimedt;obj=newobject();if(objisDateTime){dt=(DateTime)obj;}else{Console.WriteLine("類型轉(zhuǎn)換無效!");}在try語句中使用return,finally語句會不會執(zhí)行(1)
try語句塊主要用來捕獲程序運(yùn)行時(shí)的異常,catch語句塊用來處理異常,或者說將發(fā)生異常時(shí)要執(zhí)行的代碼括起來,但無論是否有異常,最后一定會執(zhí)行finally語句塊中的代碼。那么在try語句塊中使用return語句,程序會出現(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語句會不會執(zhí)行(2)上面程序的運(yùn)行結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆青海省平安區(qū)第一高級中學(xué)高三適應(yīng)性調(diào)研考試化學(xué)試題含解析
- 公司月份安全環(huán)保工作總結(jié)
- 2025屆福建省廈門市湖里區(qū)雙十中學(xué)高三第二次聯(lián)考化學(xué)試卷含解析
- 2025年氣體分離及液化設(shè)備項(xiàng)目合作計(jì)劃書
- 一年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
- 三年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案集錦
- 兒科安全輸液的管理
- 2025年風(fēng)力提水機(jī)組項(xiàng)目可行性建設(shè)方案
- 2025年超低頻測振儀項(xiàng)目建議書
- 2025年智能計(jì)量終端項(xiàng)目合作計(jì)劃書
- 托管老師培訓(xùn)
- GB/T 45156-2024安全與韌性應(yīng)急管理社區(qū)災(zāi)害預(yù)警體系實(shí)施通用指南
- 2025年中國冶金地質(zhì)總局招聘筆試參考題庫含答案解析
- 老舊小區(qū)基礎(chǔ)設(shè)施環(huán)境改造工程各項(xiàng)施工準(zhǔn)備方案
- 施工現(xiàn)場動(dòng)火分級審批制度(3篇)
- 2024年黑龍江哈爾濱市中考化學(xué)真題卷及答案解析
- 三年級下冊兩位數(shù)乘兩位數(shù)豎式計(jì)算練習(xí)200題有答案
- 衡水中學(xué)學(xué)習(xí)計(jì)劃
- 棋牌室消防應(yīng)急預(yù)案
- 智能家居的智能門鎖
- 《公園茶室設(shè)計(jì)》課件
評論
0/150
提交評論