版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章異常處理和注意事項(xiàng)12.1錯(cuò)誤和異常處理12.2C#編程規(guī)則12.3小結(jié)12.1錯(cuò)誤和異常處理錯(cuò)誤可以分為以下3類。語法錯(cuò)誤:程序代碼的編寫中,沒有按照規(guī)定的語法則會(huì)產(chǎn)生語法錯(cuò)誤。邏輯錯(cuò)誤:程序邏輯處理出現(xiàn)的錯(cuò)誤。邏輯錯(cuò)誤會(huì)導(dǎo)致實(shí)際處理結(jié)果和預(yù)測(cè)結(jié)果不相符。運(yùn)行時(shí)錯(cuò)誤:該錯(cuò)誤通常表現(xiàn)為內(nèi)存泄露、以零作除數(shù)等,這些異常會(huì)在運(yùn)行時(shí)出現(xiàn),難以確定錯(cuò)誤起因。12.1.1異常處理類Exception是異常類的基類。Exception類的常用屬性:Message、Data、Source、StackTrace等。異常類中最重要的屬性就是Message屬性和StackTrace屬性。Message屬性中包含了出錯(cuò)的原因。StackTrace屬性記錄了出錯(cuò)的詳細(xì)方法名稱。異??捎上到y(tǒng)拋出,也可由客戶程序使用throw關(guān)鍵字引發(fā)12.1.1異常處理類異常繼承體系:12.1.1異常處理類常用系統(tǒng)異常類:OutOfMemoryException:沒有足夠的內(nèi)存繼續(xù)執(zhí)行程序引發(fā)的異常;InvalidCastException:因無效類型轉(zhuǎn)換或顯式轉(zhuǎn)換引發(fā)的異常;OverflowException進(jìn)行算術(shù)運(yùn)算、類型轉(zhuǎn)換或轉(zhuǎn)換操作導(dǎo)致溢出的異常;ApplicationException:是第三方定義的異?;悾水惓V荒苡捎脩舫绦蛞l(fā),而不能由系統(tǒng)引發(fā)。12.1.2捕獲異常方式錯(cuò)誤發(fā)現(xiàn)方式:使用調(diào)試器測(cè)試:通常每種開發(fā)語言環(huán)境都有調(diào)試器,并且都方便實(shí)用。單元測(cè)試:即針對(duì)程序模塊進(jìn)行的測(cè)試。集成測(cè)試:也稱為聯(lián)合測(cè)試或組裝測(cè)試。確認(rèn)測(cè)試:也稱為有效性測(cè)試。確認(rèn)測(cè)試通常也使用黑盒測(cè)試方式,需要根據(jù)用戶的需求輸入一些數(shù)據(jù),以檢查軟件是否可以正常運(yùn)行。12.1.2捕獲異常方式使用調(diào)試器進(jìn)行調(diào)試的方式:斷點(diǎn):是程序執(zhí)行暫停的地方。3個(gè)方法設(shè)置斷點(diǎn),在菜單欄中單擊【調(diào)試】|【新建斷點(diǎn)】命令,或者在行的最左邊單擊,或者按【F9】鍵。只需再執(zhí)行一遍和設(shè)置斷點(diǎn)相同的操作即可取消斷點(diǎn)。執(zhí)行光標(biāo):執(zhí)行光標(biāo)一般黃色的,用于標(biāo)識(shí)程序當(dāng)前運(yùn)行到的行。調(diào)試工具欄:是包含調(diào)試時(shí)的常用命令的工具欄,包括啟動(dòng)調(diào)試、全部中斷、停止調(diào)試、重新啟動(dòng)、顯示下一語句、逐語句、逐過程和跳出命令按鈕。斷點(diǎn)管理窗口自動(dòng)窗口局部變量窗口監(jiān)視窗口即時(shí)窗口12.1.2捕獲異常方式斷點(diǎn)管理窗口:該窗口列出了所有斷點(diǎn),其中每一行都代表一個(gè)斷點(diǎn),每個(gè)斷點(diǎn)都由所在文件、條件、命中次數(shù)等項(xiàng)來描述。自動(dòng)窗口:必須在調(diào)試運(yùn)行時(shí)才能打開,“自動(dòng)窗口”自動(dòng)跟蹤運(yùn)行光標(biāo)的當(dāng)前行和下一行的變量,顯示變量列表和變量當(dāng)前值?!白詣?dòng)窗口”的變量是系統(tǒng)自動(dòng)跟蹤的,無需自行添加。而且,當(dāng)運(yùn)行光標(biāo)所在語句行有方法調(diào)用時(shí),“自動(dòng)窗口”將顯示該方法以及包含該方法調(diào)用的所有方法的返回值。12.1.2捕獲異常方式局部變量窗口:局部變量窗口跟蹤當(dāng)前局部范圍內(nèi)所有變量,跟蹤的局部范圍就是該方法的作用范圍,也就是說局部變量窗口可以顯示方法內(nèi)出現(xiàn)的所有變量。監(jiān)視窗口:可以自定義要跟蹤的變量。即時(shí)窗口:“即時(shí)窗口”可以不在調(diào)試時(shí)執(zhí)行。如果在調(diào)試中執(zhí)行,在“即時(shí)窗口”里可以計(jì)算表達(dá)式、執(zhí)行語句、跟蹤變量等。12.1.2捕獲異常方式結(jié)構(gòu)化異常處理:對(duì)于結(jié)構(gòu)化異常處理,使用trycatch語句結(jié)構(gòu)來捕獲和處理錯(cuò)誤。如果進(jìn)行了異常處理,那么CLR將調(diào)用異常處理代碼;如果未進(jìn)行異常處理,那么CLR會(huì)終止程序的執(zhí)行并彈出錯(cuò)誤提示窗口。其語法形式為:try{
正常處理模塊}Catch(Exceptione){
錯(cuò)誤處理模塊}12.1.2捕獲異常方式示例:staticvoidMain(string[]args){
int[]a=newint[5];try{a[10]=1;}catch(Exceptione){
Console.WriteLine("數(shù)組訪問錯(cuò)誤,{0}",e.Message);}
Console.ReadLine();}12.1.3自定義異常處理類自定義異常類語法形式如下。publicclassUserMessageException:ApplicationException{publicUserMessageException(String
msg):base(msg){}}對(duì)于自定義異常處理類,需要人為引發(fā)異常,因此需要使用throw關(guān)鍵字顯式引發(fā)異常。12.1.3自定義異常處理類throw使用示例:staticvoidMain(string[]args){try{…….if(i>a.Length)thrownewIndexOutOfRangeException();
a[i]=int.Parse(Console.Readline());}
catch(System.IndexOutOfRangeExceptione)
{//數(shù)組越界異常
}}12.1.3自定義異常處理類自定義異常類使用示例:classEmailException:Exception{stringerrorname; //出錯(cuò)人姓名
stringerrmsg; //錯(cuò)誤信息
publicEmailException(string
msg,stringname):base(msg)//構(gòu)造函數(shù)
{
errorname=name;
errordate=DateTime.Now.ToString();
errormsg=msg;}publicvoidSendToMail(){
Console.WriteLine(errorname+””+errormsg);}}
12.1.3自定義異常處理類代碼接上節(jié)
classTest{staticbool
CheckEmail(){returnfalse;}staticvoidMain(string[]args){try{if(!CheckEmail())thrownewEmailException("電子郵件地址有誤!","杰克");}catch(EmailExceptione){
e.SendToMail();}}12.2C#編程規(guī)則12.2.1源代碼內(nèi)部注釋規(guī)則文件頭部注釋規(guī)則1:文件包含文件頭,需要說明文件名、作者、創(chuàng)建時(shí)間、變更記錄等。/****************************文件名:NetPrint.cs*作者:xxx*創(chuàng)建日期:2008年12月3日*描述:完成打印功能*修改日期:2008年12月31日*Email:lianjie@126.com***************************/12.2.1源代碼內(nèi)部注釋規(guī)則規(guī)則2:推薦采用.NET形式書寫頭部注釋。示例:///<summary>///文件名:NetPrint.cs///作者:xxx///創(chuàng)建日期:2008年12月3日///描述:完成打印功能///修改日期:2008年12月31日///Email:VisualStudio2008rumen@126.com///</summary>12.2.1源代碼內(nèi)部注釋規(guī)則類及其成員注釋規(guī)則1:對(duì)方法和類的注釋要使用三斜線(///)示例:///<summary>///功能:對(duì)于此類功能的描述///作者:作者中文名///日期:編寫日期等///</summary>classBookSystem{///<summary>///圖書詳細(xì)信息查詢
///</summary>publicDataSet
SelectBooks(intid){}}12.2.1源代碼內(nèi)部注釋規(guī)則規(guī)則2:代碼行文注釋需使用“//”和“/*…*/”,應(yīng)盡量詳細(xì)說明。示例:publicDataSet
SelectBooks(intid)/*書籍ID*/{
DataSet
dsBook;//書籍?dāng)?shù)據(jù)集}12.2.2用法約定命名規(guī)則駱駝命名法(Camel):即名稱像駱駝背一樣跌宕起伏。該命名法要求名稱的首單詞要小寫,隨后的單詞首字母要大寫,例如下列代碼:
voidprintEmployeePaychecks(){…}帕斯卡命名法(Pascal):與駱駝命名法類似,區(qū)別在于要求首單詞大寫,而駱駝命名法要求小寫,例如下列代碼:
voidPrintEmployeePaychecks(){…}命名規(guī)則匈牙利命名法(Hungarian):匈牙利命名法是一位名為CharlesSimonyi的匈牙利程序員發(fā)明的?;驹瓌t是變量名=類型+對(duì)象描述。示例:classcBitmap;stringsCustomers;int
nLength;bool
bEnable;命名規(guī)范命名規(guī)范類的命名規(guī)范:在類中需使用Pascal規(guī)則命名類名。classPerson使用能夠反映類功能的名詞或名詞短語命名類。publicclassFileStream不能使用“_”、“C”、“I”等具備特定含義的前綴。class_ManagerSystem//最好不要這樣定義。自定義異常類應(yīng)以Exception結(jié)尾。
classTvException
命名規(guī)范類字段命名規(guī)范如下使用Camel命名規(guī)則為類成員變量命名,即首單詞(或單詞縮寫)小寫。
stringstuName;類字段變量名前可加“_”前綴。
string_stuName;禁止在普通變量前加“m_”前綴,這是C語言中較老的命名規(guī)則。stringm_stuName;命名規(guī)范方法的命名規(guī)范使用Pascal命名規(guī)則為方法命名,即首字母大寫。publicvoidDoubleValue(){…}方法名應(yīng)盡量使用動(dòng)詞或動(dòng)詞短語。voidRemoveAll(){…}類中的訪問修飾符或功能相同的方法應(yīng)該放置在一起,且公共或?qū)崿F(xiàn)接口的方法在前。命名規(guī)范屬性的命名規(guī)范:使用名詞定義屬性,使用Pascal命令規(guī)則為屬性命名,即首字母大寫。
publicColorBookName
屬性和相應(yīng)字段名稱要關(guān)聯(lián)。publicclassBook{privatestringbookName;publicColorBookName{get{returnbookName;}}}命名規(guī)范參數(shù)的命名規(guī)范使用Camel命名規(guī)則為參數(shù)命名,即首字母小寫,例如下列代碼。stringFormat(stringformat,object[]args){…}使用描述性參數(shù)名稱,參數(shù)名稱應(yīng)當(dāng)具有說明性。不能給參數(shù)加匈牙利類型表示法的前綴。例如下列代碼是不合理的。
voidInsert(string
sName,string
strAddress)正確形式如下。
voidInsert(string
name,stringaddress)命名規(guī)范常量的命名規(guī)范使用Pascal命名規(guī)則為只讀常量命名,即首字母大寫使用Pascal命名規(guī)則為枚舉命名,因?yàn)槊杜e成員本屬于常量,命名規(guī)則同上使用Pascal命名規(guī)則為靜態(tài)成員或?qū)傩悦词鬃帜复髮懨?guī)范接口的命名規(guī)范使用Pascal規(guī)則為接口命名,且必須以大寫I開頭。publicinterfaceIDataPortpublicinterfaceIFormTable接口名稱要有意義,中間不能有下劃線“_”等字符,例如下列代碼。interfaceI_Data_Port;//這是不合適的如果類實(shí)現(xiàn)了接口,名稱盡量和接口相同,只是省略掉“I”字符。命名規(guī)范事件的命名規(guī)范使用Pascal命名規(guī)則為委托命名,即首字母大寫,例如下列代碼。p
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版場(chǎng)項(xiàng)目投標(biāo)失利后風(fēng)險(xiǎn)管控優(yōu)化合同3篇
- 郴州市保安員二零二五年度安全責(zé)任與義務(wù)合同3篇
- 2025至2030年中國傘用槽骨數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年多功能感應(yīng)加熱器項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年下水管道疏通機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年觸發(fā)控制電路項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年氣動(dòng)對(duì)夾式中線蝶閥項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年折疊式工業(yè)門項(xiàng)目投資價(jià)值分析報(bào)告
- 二零二五年度游戲工作室游戲產(chǎn)品優(yōu)化勞務(wù)服務(wù)合同
- 2025年度沿街商鋪?zhàn)赓U合同(含租賃期間的市場(chǎng)競(jìng)爭(zhēng)保護(hù))
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計(jì)算機(jī)組成原理-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫及答案解析
- 2024年湖北省武漢市中考語文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 皮膚惡性黑色素瘤-疾病研究白皮書
- 從心理學(xué)看現(xiàn)代家庭教育課件
- C語言程序設(shè)計(jì)PPT(第7版)高職完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論