第12章 異常處理和注意事項(xiàng)_第1頁
第12章 異常處理和注意事項(xiàng)_第2頁
第12章 異常處理和注意事項(xiàng)_第3頁
第12章 異常處理和注意事項(xiàng)_第4頁
第12章 異常處理和注意事項(xiàng)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論