![第12章 異常處理和注意事項_第1頁](http://file4.renrendoc.com/view/24bb01220b79636c1490ea1157b99555/24bb01220b79636c1490ea1157b995551.gif)
![第12章 異常處理和注意事項_第2頁](http://file4.renrendoc.com/view/24bb01220b79636c1490ea1157b99555/24bb01220b79636c1490ea1157b995552.gif)
![第12章 異常處理和注意事項_第3頁](http://file4.renrendoc.com/view/24bb01220b79636c1490ea1157b99555/24bb01220b79636c1490ea1157b995553.gif)
![第12章 異常處理和注意事項_第4頁](http://file4.renrendoc.com/view/24bb01220b79636c1490ea1157b99555/24bb01220b79636c1490ea1157b995554.gif)
![第12章 異常處理和注意事項_第5頁](http://file4.renrendoc.com/view/24bb01220b79636c1490ea1157b99555/24bb01220b79636c1490ea1157b995555.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第12章異常處理和注意事項12.1錯誤和異常處理12.2C#編程規(guī)則12.3小結12.1錯誤和異常處理錯誤可以分為以下3類。語法錯誤:程序代碼的編寫中,沒有按照規(guī)定的語法則會產(chǎn)生語法錯誤。邏輯錯誤:程序邏輯處理出現(xiàn)的錯誤。邏輯錯誤會導致實際處理結果和預測結果不相符。運行時錯誤:該錯誤通常表現(xiàn)為內存泄露、以零作除數(shù)等,這些異常會在運行時出現(xiàn),難以確定錯誤起因。12.1.1異常處理類Exception是異常類的基類。Exception類的常用屬性:Message、Data、Source、StackTrace等。異常類中最重要的屬性就是Message屬性和StackTrace屬性。Message屬性中包含了出錯的原因。StackTrace屬性記錄了出錯的詳細方法名稱。異常可由系統(tǒng)拋出,也可由客戶程序使用throw關鍵字引發(fā)12.1.1異常處理類異常繼承體系:12.1.1異常處理類常用系統(tǒng)異常類:OutOfMemoryException:沒有足夠的內存繼續(xù)執(zhí)行程序引發(fā)的異常;InvalidCastException:因無效類型轉換或顯式轉換引發(fā)的異常;OverflowException進行算術運算、類型轉換或轉換操作導致溢出的異常;ApplicationException:是第三方定義的異?;悾水惓V荒苡捎脩舫绦蛞l(fā),而不能由系統(tǒng)引發(fā)。12.1.2捕獲異常方式錯誤發(fā)現(xiàn)方式:使用調試器測試:通常每種開發(fā)語言環(huán)境都有調試器,并且都方便實用。單元測試:即針對程序模塊進行的測試。集成測試:也稱為聯(lián)合測試或組裝測試。確認測試:也稱為有效性測試。確認測試通常也使用黑盒測試方式,需要根據(jù)用戶的需求輸入一些數(shù)據(jù),以檢查軟件是否可以正常運行。12.1.2捕獲異常方式使用調試器進行調試的方式:斷點:是程序執(zhí)行暫停的地方。3個方法設置斷點,在菜單欄中單擊【調試】|【新建斷點】命令,或者在行的最左邊單擊,或者按【F9】鍵。只需再執(zhí)行一遍和設置斷點相同的操作即可取消斷點。執(zhí)行光標:執(zhí)行光標一般黃色的,用于標識程序當前運行到的行。調試工具欄:是包含調試時的常用命令的工具欄,包括啟動調試、全部中斷、停止調試、重新啟動、顯示下一語句、逐語句、逐過程和跳出命令按鈕。斷點管理窗口自動窗口局部變量窗口監(jiān)視窗口即時窗口12.1.2捕獲異常方式斷點管理窗口:該窗口列出了所有斷點,其中每一行都代表一個斷點,每個斷點都由所在文件、條件、命中次數(shù)等項來描述。自動窗口:必須在調試運行時才能打開,“自動窗口”自動跟蹤運行光標的當前行和下一行的變量,顯示變量列表和變量當前值。“自動窗口”的變量是系統(tǒng)自動跟蹤的,無需自行添加。而且,當運行光標所在語句行有方法調用時,“自動窗口”將顯示該方法以及包含該方法調用的所有方法的返回值。12.1.2捕獲異常方式局部變量窗口:局部變量窗口跟蹤當前局部范圍內所有變量,跟蹤的局部范圍就是該方法的作用范圍,也就是說局部變量窗口可以顯示方法內出現(xiàn)的所有變量。監(jiān)視窗口:可以自定義要跟蹤的變量。即時窗口:“即時窗口”可以不在調試時執(zhí)行。如果在調試中執(zhí)行,在“即時窗口”里可以計算表達式、執(zhí)行語句、跟蹤變量等。12.1.2捕獲異常方式結構化異常處理:對于結構化異常處理,使用trycatch語句結構來捕獲和處理錯誤。如果進行了異常處理,那么CLR將調用異常處理代碼;如果未進行異常處理,那么CLR會終止程序的執(zhí)行并彈出錯誤提示窗口。其語法形式為:try{
正常處理模塊}Catch(Exceptione){
錯誤處理模塊}12.1.2捕獲異常方式示例:staticvoidMain(string[]args){
int[]a=newint[5];try{a[10]=1;}catch(Exceptione){
Console.WriteLine("數(shù)組訪問錯誤,{0}",e.Message);}
Console.ReadLine();}12.1.3自定義異常處理類自定義異常類語法形式如下。publicclassUserMessageException:ApplicationException{publicUserMessageException(String
msg):base(msg){}}對于自定義異常處理類,需要人為引發(fā)異常,因此需要使用throw關鍵字顯式引發(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; //出錯人姓名
stringerrmsg; //錯誤信息
publicEmailException(string
msg,stringname):base(msg)//構造函數(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源代碼內部注釋規(guī)則文件頭部注釋規(guī)則1:文件包含文件頭,需要說明文件名、作者、創(chuàng)建時間、變更記錄等。/****************************文件名:NetPrint.cs*作者:xxx*創(chuàng)建日期:2008年12月3日*描述:完成打印功能*修改日期:2008年12月31日*Email:lianjie@126.com***************************/12.2.1源代碼內部注釋規(guī)則規(guī)則2:推薦采用.NET形式書寫頭部注釋。示例:///<summary>///文件名:NetPrint.cs///作者:xxx///創(chuàng)建日期:2008年12月3日///描述:完成打印功能///修改日期:2008年12月31日///Email:VisualStudio2008rumen@126.com///</summary>12.2.1源代碼內部注釋規(guī)則類及其成員注釋規(guī)則1:對方法和類的注釋要使用三斜線(///)示例:///<summary>///功能:對于此類功能的描述///作者:作者中文名///日期:編寫日期等///</summary>classBookSystem{///<summary>///圖書詳細信息查詢
///</summary>publicDataSet
SelectBooks(intid){}}12.2.1源代碼內部注釋規(guī)則規(guī)則2:代碼行文注釋需使用“//”和“/*…*/”,應盡量詳細說明。示例:publicDataSet
SelectBooks(intid)/*書籍ID*/{
DataSet
dsBook;//書籍數(shù)據(jù)集}12.2.2用法約定命名規(guī)則駱駝命名法(Camel):即名稱像駱駝背一樣跌宕起伏。該命名法要求名稱的首單詞要小寫,隨后的單詞首字母要大寫,例如下列代碼:
voidprintEmployeePaychecks(){…}帕斯卡命名法(Pascal):與駱駝命名法類似,區(qū)別在于要求首單詞大寫,而駱駝命名法要求小寫,例如下列代碼:
voidPrintEmployeePaychecks(){…}命名規(guī)則匈牙利命名法(Hungarian):匈牙利命名法是一位名為CharlesSimonyi的匈牙利程序員發(fā)明的?;驹瓌t是變量名=類型+對象描述。示例:classcBitmap;stringsCustomers;int
nLength;bool
bEnable;命名規(guī)范命名規(guī)范類的命名規(guī)范:在類中需使用Pascal規(guī)則命名類名。classPerson使用能夠反映類功能的名詞或名詞短語命名類。publicclassFileStream不能使用“_”、“C”、“I”等具備特定含義的前綴。class_ManagerSystem//最好不要這樣定義。自定義異常類應以Exception結尾。
classTvException
命名規(guī)范類字段命名規(guī)范如下使用Camel命名規(guī)則為類成員變量命名,即首單詞(或單詞縮寫)小寫。
stringstuName;類字段變量名前可加“_”前綴。
string_stuName;禁止在普通變量前加“m_”前綴,這是C語言中較老的命名規(guī)則。stringm_stuName;命名規(guī)范方法的命名規(guī)范使用Pascal命名規(guī)則為方法命名,即首字母大寫。publicvoidDoubleValue(){…}方法名應盡量使用動詞或動詞短語。voidRemoveAll(){…}類中的訪問修飾符或功能相同的方法應該放置在一起,且公共或實現(xiàn)接口的方法在前。命名規(guī)范屬性的命名規(guī)范:使用名詞定義屬性,使用Pascal命令規(guī)則為屬性命名,即首字母大寫。
publicColorBookName
屬性和相應字段名稱要關聯(lián)。publicclassBook{privatestringbookName;publicColorBookName{get{returnbookName;}}}命名規(guī)范參數(shù)的命名規(guī)范使用Camel命名規(guī)則為參數(shù)命名,即首字母小寫,例如下列代碼。stringFormat(stringformat,object[]args){…}使用描述性參數(shù)名稱,參數(shù)名稱應當具有說明性。不能給參數(shù)加匈牙利類型表示法的前綴。例如下列代碼是不合理的。
voidInsert(string
sName,string
strAddress)正確形式如下。
voidInsert(string
name,stringaddress)命名規(guī)范常量的命名規(guī)范使用Pascal命名規(guī)則為只讀常量命名,即首字母大寫使用Pascal命名規(guī)則為枚舉命名,因為枚舉成員本屬于常量,命名規(guī)則同上使用Pascal命名規(guī)則為靜態(tài)成員或屬性命名,即首字母大寫命名規(guī)范接口的命名規(guī)范使用Pascal規(guī)則為接口命名,且必須以大寫I開頭。publicinterfaceIDataPortpublicinterfaceIFormTable接口名稱要有意義,中間不能有下劃線“_”等字符,例如下列代碼。interfaceI_Data_Port;//這是不合適的如果類實現(xiàn)了接口,名稱盡量和接口相同,只是省略掉“I”字符。命名規(guī)范事件的命名規(guī)范使用Pascal命名規(guī)則為委托命名,即首字母大寫,例如下列代碼。p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級英語下冊 Unit 2 單元綜合測試卷(人教河南版 2025年春)
- 2025年低碳小鎮(zhèn)合作協(xié)議書
- 2025年游戲陪玩合作協(xié)議書
- 2025年地震前兆觀測儀器合作協(xié)議書
- 三嚴三實與公務員作風建設試題答卷(2015.9)
- 2025年九年級英語培優(yōu)輔差總結(五篇)
- 2025年產(chǎn)權交易合同(2篇)
- 2025年交通賠償?shù)暮贤瑓f(xié)議模板(三篇)
- 2025年中秋節(jié)幼兒活動總結(二篇)
- 專題01 函數(shù)的定義域(含2021-2023高考真題)(解析版)
- 中國移動行測測評題及答案
- 統(tǒng)編版語文八年級下冊第7課《大雁歸來》分層作業(yè)(原卷版+解析版)
- 2024年湖南省普通高中學業(yè)水平考試政治試卷(含答案)
- 零售企業(yè)加盟管理手冊
- 設備維保的維修流程與指導手冊
- 招標代理服務的關鍵流程與難點解析
- 材料預定協(xié)議
- 2023年河北省中考數(shù)學試卷(含解析)
- 《學習的本質》讀書會活動
- 高氨血癥護理課件
- 物流營銷(第四版) 課件 胡延華 第3、4章 物流目標客戶選擇、物流服務項目開發(fā)
評論
0/150
提交評論