第5章 異常處理與程序發(fā)布_第1頁
第5章 異常處理與程序發(fā)布_第2頁
第5章 異常處理與程序發(fā)布_第3頁
第5章 異常處理與程序發(fā)布_第4頁
第5章 異常處理與程序發(fā)布_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第5章 異常處理與程序發(fā)布5.1 錯誤、異常與調(diào)試的概念錯誤、異常與調(diào)試的概念n程序錯誤的分類程序錯誤的分類n語法錯誤(編譯錯誤)語法錯誤(編譯錯誤)n輸入了錯誤的語法,以紅色波浪線標出;或者在輸入了錯誤的語法,以紅色波浪線標出;或者在“錯誤列表錯誤列表”窗口中顯示窗口中顯示n如:缺少標點、變量未定義、數(shù)組越界、空值等如:缺少標點、變量未定義、數(shù)組越界、空值等n語義錯誤(運行錯誤)語義錯誤(運行錯誤)n在程序運行階段拋出異常在程序運行階段拋出異常n如:除數(shù)為如:除數(shù)為0,加載的圖片文件不存在等,加載的圖片文件不存在等n邏輯錯誤邏輯錯誤n運行程序后,未達到預(yù)期的結(jié)果運行程序后,未達到預(yù)期的結(jié)果5

2、.1 錯誤、異常與調(diào)試的概念錯誤、異常與調(diào)試的概念n異常:異常:n程序運行期間發(fā)生的錯誤及其他以外行為程序運行期間發(fā)生的錯誤及其他以外行為n調(diào)試調(diào)試n發(fā)現(xiàn)錯誤并排除錯誤的過程叫調(diào)試發(fā)現(xiàn)錯誤并排除錯誤的過程叫調(diào)試n調(diào)試是幫助程序設(shè)計人員查找和排除代碼錯誤調(diào)試是幫助程序設(shè)計人員查找和排除代碼錯誤的有效手段的有效手段.5.2 異常處理異常處理nC#異常處理機制的步驟:異常處理機制的步驟:n(1) C#程序在執(zhí)行過程中一旦出現(xiàn)異常,就會自動產(chǎn)程序在執(zhí)行過程中一旦出現(xiàn)異常,就會自動產(chǎn)生一個異常類對象。該異常類對象被提交給生一個異常類對象。該異常類對象被提交給C#運行運行時的系統(tǒng)(時的系統(tǒng)(JIT),這個

3、過程稱為),這個過程稱為拋出異常拋出異常。也可以。也可以使用使用throw語句強制拋出異常。語句強制拋出異常。n(2) JIT接收到異常對象后,會尋找能處理該異常的接收到異常對象后,會尋找能處理該異常的方法并把當前異常對象交給其處理,這一過程稱為方法并把當前異常對象交給其處理,這一過程稱為捕捕獲異常獲異常。n(3) 若系統(tǒng)找不到可以捕獲異常的方法時,運行時系若系統(tǒng)找不到可以捕獲異常的方法時,運行時系統(tǒng)將終止,相應(yīng)的統(tǒng)將終止,相應(yīng)的C#程序也將退出。程序也將退出。5.2.1 異常類異常類nSystem.Exception類是所有異常類的基類類是所有異常類的基類nException類是所有異常類的

4、基類。類是所有異常類的基類。Exception類有一個經(jīng)類有一個經(jīng)常用到的常用到的Message屬性,該屬性為字符串類型,提供了錯誤屬性,該屬性為字符串類型,提供了錯誤描述的文本。描述的文本。nSystemException:Exception類派生子類,是系統(tǒng)類派生子類,是系統(tǒng)定義的各種異常。定義的各種異常。 nApplicationException :Exception類派生子類,類派生子類,是用戶定義的各種異常的基類。是用戶定義的各種異常的基類。n系統(tǒng)定義的異常類見表系統(tǒng)定義的異常類見表5-25.2.1 異常類異常類 系統(tǒng)定義的異常類見表系統(tǒng)定義的異常類見表5-2異常類異常類描述描述E

5、xception所有異常對象的基類所有異常對象的基類SystemException系統(tǒng)定義的各種異常的基類系統(tǒng)定義的各種異常的基類ApplicationException用戶定義的異常的基類用戶定義的異常的基類IndexOutOfRangeException當一個數(shù)組的下標超出范圍時運行時引發(fā)當一個數(shù)組的下標超出范圍時運行時引發(fā)NullReferenceException當一個空對象被引用時運行時引發(fā)當一個空對象被引用時運行時引發(fā)DividedByZeroException表示被零除時引發(fā)的異常表示被零除時引發(fā)的異常OverflowException算術(shù)操作溢出引發(fā)的異常算術(shù)操作溢出引發(fā)的異常

6、IOException表示發(fā)生表示發(fā)生I/O錯誤時引發(fā)的異常錯誤時引發(fā)的異常InvalidOperationException當對象處于無效狀態(tài)時,由方法引發(fā)當對象處于無效狀態(tài)時,由方法引發(fā)ArgumentException所有參數(shù)異常的基類所有參數(shù)異常的基類ArgumentNullException在不允許參數(shù)為空的情況下,由方法引發(fā)在不允許參數(shù)為空的情況下,由方法引發(fā)ArgumentOutOfRangeException當參數(shù)不在一個給定范圍之內(nèi)時,由方法引發(fā)當參數(shù)不在一個給定范圍之內(nèi)時,由方法引發(fā)FormatException格式錯誤時引發(fā)的異常格式錯誤時引發(fā)的異常FileNotFoun

7、dException文件不存在時引發(fā)的異常文件不存在時引發(fā)的異常5.2.2 異常處理語句異常處理語句try /可能產(chǎn)生異常的代碼可能產(chǎn)生異常的代碼;catch (異常類異常類 異常對象標識符異常對象標識符) /異常處理代碼異常處理代碼;其他其他catchfinally /無論是否產(chǎn)生異??傄獔?zhí)行代碼無論是否產(chǎn)生異??傄獔?zhí)行代碼1.Try塊不能缺省塊不能缺省2.Catch塊可有多個塊可有多個3.Catch塊和塊和finally塊可同時塊可同時有,或者必有其一有,或者必有其一5.2.2 異常處理語句異常處理語句try塊塊發(fā)生錯誤發(fā)生錯誤1發(fā)生錯誤發(fā)生錯誤2沒有發(fā)生錯誤沒有發(fā)生錯誤catch塊塊1c

8、atch塊塊2finally塊塊圖圖5-1 異常處理語句異常處理語句流程流程n異常處理異常處理【實例實例5-1】5.2.3 自定義異常自定義異常n自定義異常類的步驟:自定義異常類的步驟:n(1)聲明一個異常類,該類以聲明一個異常類,該類以ApplicationException類或其他已經(jīng)存在的異常類(包括用戶異常類)為父類或其他已經(jīng)存在的異常類(包括用戶異常類)為父類。如類。如:outofBoundExceptionn(2)為異常類定義屬性和方法,這些屬性和方法能夠體為異常類定義屬性和方法,這些屬性和方法能夠體現(xiàn)該類所對應(yīng)的錯誤信息現(xiàn)該類所對應(yīng)的錯誤信息n(3)使用使用“throw new

9、outofBoundException()”拋出異常拋出異常n自定義異常類自定義異常類【實例實例5-2】5.3.1 程序調(diào)試程序調(diào)試n在調(diào)試應(yīng)用程序的過程中,可以充分控在調(diào)試應(yīng)用程序的過程中,可以充分控制應(yīng)用程序的執(zhí)行過程,包括以不同方制應(yīng)用程序的執(zhí)行過程,包括以不同方式啟動調(diào)試過程、中斷應(yīng)用程序的執(zhí)行、式啟動調(diào)試過程、中斷應(yīng)用程序的執(zhí)行、步進執(zhí)行程序、運行到指定位置以及終步進執(zhí)行程序、運行到指定位置以及終止應(yīng)用程序的執(zhí)行等。止應(yīng)用程序的執(zhí)行等。5.3.1 程序調(diào)試程序調(diào)試n利用調(diào)試器,發(fā)現(xiàn)并改正程序中錯誤的過程,在利用調(diào)試器,發(fā)現(xiàn)并改正程序中錯誤的過程,在C#中中主要表現(xiàn)在以下幾方面:主要表

10、現(xiàn)在以下幾方面:n插入斷點,使程序暫停插入斷點,使程序暫停n在斷點處查看局部變量和其他相關(guān)數(shù)據(jù)在斷點處查看局部變量和其他相關(guān)數(shù)據(jù)n查看并編輯變量查看并編輯變量n一次執(zhí)行程序中的一行代碼(逐句調(diào)試)一次執(zhí)行程序中的一行代碼(逐句調(diào)試)n在應(yīng)用程序執(zhí)行過程中,監(jiān)視變量的改變在應(yīng)用程序執(zhí)行過程中,監(jiān)視變量的改變n常用調(diào)試快捷鍵常用調(diào)試快捷鍵nF5調(diào)試調(diào)試 Shift+F5終止調(diào)試終止調(diào)試nF10逐過程調(diào)試逐過程調(diào)試 F11逐語句調(diào)試逐語句調(diào)試125.3.2 附加到進程附加到進程 nVisual Studio 2010調(diào)試器能夠附加調(diào)試器能夠附加在集成開發(fā)環(huán)境外部運行的進程上,可在集成開發(fā)環(huán)境外部運行

11、的進程上,可以使用這種功能來調(diào)試正在運行的應(yīng)用以使用這種功能來調(diào)試正在運行的應(yīng)用程序、同時調(diào)試多個程序、調(diào)試遠程機程序、同時調(diào)試多個程序、調(diào)試遠程機器上的程序以及在應(yīng)用程序崩潰時自動器上的程序以及在應(yīng)用程序崩潰時自動啟動調(diào)試器。一旦附加到進程上,就可啟動調(diào)試器。一旦附加到進程上,就可以使用調(diào)試器提供的各種功能控制程序以使用調(diào)試器提供的各種功能控制程序的運行和查看進程的狀態(tài)。的運行和查看進程的狀態(tài)。 5.3.3 程序調(diào)試程序調(diào)試-斷點斷點 斷點是調(diào)試應(yīng)用程序時經(jīng)常使用的一種工具。每當調(diào)斷點是調(diào)試應(yīng)用程序時經(jīng)常使用的一種工具。每當調(diào)試器遇到一個斷點時,它都要中斷程序的執(zhí)行而轉(zhuǎn)入中試器遇到一個斷點時

12、,它都要中斷程序的執(zhí)行而轉(zhuǎn)入中斷模式。斷模式。VS 2008VS 2008調(diào)試器支持四種類型的斷點:調(diào)試器支持四種類型的斷點:n斷點的類型斷點的類型n函數(shù)斷點:使程序在執(zhí)行到達指定函數(shù)內(nèi)的指定位置時中斷函數(shù)斷點:使程序在執(zhí)行到達指定函數(shù)內(nèi)的指定位置時中斷n文件斷點:使程序在執(zhí)行到達指定文件內(nèi)指定位置時中斷文件斷點:使程序在執(zhí)行到達指定文件內(nèi)指定位置時中斷n地址斷點:使程序在執(zhí)行到達指定的內(nèi)存地址時中斷地址斷點:使程序在執(zhí)行到達指定的內(nèi)存地址時中斷n數(shù)據(jù)中斷:使數(shù)據(jù)在變量值改變時中斷數(shù)據(jù)中斷:使數(shù)據(jù)在變量值改變時中斷n設(shè)置斷點設(shè)置斷點n單擊設(shè)置斷點的行左邊的指示器邊距,此時指示器邊距內(nèi)出現(xiàn)一單擊

13、設(shè)置斷點的行左邊的指示器邊距,此時指示器邊距內(nèi)出現(xiàn)一紅色圓點,代碼行突出顯示紅色圓點,代碼行突出顯示n刪除斷點刪除斷點n禁用或啟用斷點禁用或啟用斷點5.3.3 程序調(diào)試程序調(diào)試-斷點斷點n默認情況下,調(diào)試器遇到斷點時總會中斷程序的執(zhí)行,。默認情況下,調(diào)試器遇到斷點時總會中斷程序的執(zhí)行,。也也可以通過設(shè)置斷點的屬性來改變這種默認的行為,指可以通過設(shè)置斷點的屬性來改變這種默認的行為,指定在滿足一定的條件下才發(fā)生中斷。定在滿足一定的條件下才發(fā)生中斷。n在紅色斷點上右擊鼠標,在彈出的快捷菜單設(shè)置:在紅色斷點上右擊鼠標,在彈出的快捷菜單設(shè)置:n命中次數(shù):指定在調(diào)試器中斷執(zhí)行之前斷點可以被命命中次數(shù):指定

14、在調(diào)試器中斷執(zhí)行之前斷點可以被命中多少次中多少次n條件:是一個表達式,決定斷點是命中還是跳過條件:是一個表達式,決定斷點是命中還是跳過5.3.4 程序調(diào)試程序調(diào)試-查看程序的狀態(tài)查看程序的狀態(tài) Visual Studio 2008調(diào)試器提供了許多工具可以在調(diào)試器提供了許多工具可以在中斷模式下查看應(yīng)用程序的狀態(tài)。中斷模式下查看應(yīng)用程序的狀態(tài)。當程序處于中斷模當程序處于中斷模式下時,把鼠標移到當前執(zhí)行范圍內(nèi)某個變量上會以式下時,把鼠標移到當前執(zhí)行范圍內(nèi)某個變量上會以工具提示的方式顯示該變量的值。工具提示的方式顯示該變量的值。除此之外,還可以除此之外,還可以使用以下工具。使用以下工具。n自動窗口自動

15、窗口n局部變量窗口局部變量窗口n監(jiān)視窗口監(jiān)視窗口n內(nèi)存窗口內(nèi)存窗口n寄存器窗口寄存器窗口n調(diào)用堆棧窗口調(diào)用堆棧窗口n反匯編窗口反匯編窗口5.3.4 程序調(diào)試程序調(diào)試-查看程序的狀態(tài)查看程序的狀態(tài)n各種監(jiān)視窗口各種監(jiān)視窗口n“快速監(jiān)視快速監(jiān)視”窗口窗口n中斷模式下,在源代碼窗口右擊鼠標,快捷菜單中斷模式下,在源代碼窗口右擊鼠標,快捷菜單“快速快速監(jiān)視監(jiān)視”n“監(jiān)視監(jiān)視”窗口窗口n中斷模式下,在源代碼窗口右擊鼠標,快捷菜單中斷模式下,在源代碼窗口右擊鼠標,快捷菜單“監(jiān)視監(jiān)視”n選擇某個變量選擇某個變量,將其拖到,將其拖到“監(jiān)視監(jiān)視”窗口中窗口中n“局部變量局部變量”窗口和窗口和“this”窗口窗口n在中斷模式下,菜單命令在中斷模式下,菜單命令“調(diào)試調(diào)試|窗口窗口|局部局部”n系統(tǒng)根據(jù)執(zhí)行的位置自動跟蹤添加局部變量,并顯示變系統(tǒng)根據(jù)執(zhí)行的位置自動跟蹤添加局部變量,并顯示變量值的變化量值的變化175.4 程序發(fā)布程序發(fā)布 n參見教材參見教材“程序發(fā)布的步驟程序發(fā)布的步

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論