12錯(cuò)誤處理_第1頁
12錯(cuò)誤處理_第2頁
12錯(cuò)誤處理_第3頁
12錯(cuò)誤處理_第4頁
12錯(cuò)誤處理_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第 12章 錯(cuò)誤調(diào)試和異常處理 12.1 錯(cuò)誤分類 12.2 程序調(diào)試 12.3 異常處理 12.1 錯(cuò)誤分類 1. 語法錯(cuò)誤 語法錯(cuò)誤也稱為編譯錯(cuò)誤,是由于不正確地編寫代碼而產(chǎn)生的。如果錯(cuò)誤地輸入了關(guān)鍵字(例如,將 int簡寫為Int)、遺漏了某些必須的語句成分等,那么 C#在編譯應(yīng)用程序時(shí)就會(huì)檢測到這些錯(cuò)誤,并提示相應(yīng)的錯(cuò)誤信息。 代碼加行號: 選擇“工具” |“選項(xiàng)”命令,在出現(xiàn)的“選項(xiàng)”對話框中選擇“文本編輯器” |“C#”|“常規(guī)”選項(xiàng),出現(xiàn)如圖 12.2所示的對話框。例如,勾選“行號”則在代碼的每一行前顯示該行的行號,還可以通過選擇“ C#”中其他項(xiàng)來設(shè)置較復(fù)雜的編輯功能。 2. 運(yùn)行錯(cuò)誤 在 C#項(xiàng)目運(yùn)行期間,當(dāng)一個(gè)語句試圖執(zhí)行一個(gè)不能執(zhí)行的操作時(shí),就會(huì)發(fā)生運(yùn)行錯(cuò)誤。例如,數(shù)據(jù)溢出、數(shù)組下標(biāo)越界等。 例如,有一個(gè)窗體 myForm1上包含以下事件過程: private void button1_Click(object sender, EventArgs e) int a=new int10; int i; for (i = 0;i=20;i+) ai = 2 * i; 12.2 程序調(diào)試 C#提供了強(qiáng)大的程序調(diào)試功能,使用其調(diào)試環(huán)境可以有效地完成程序的調(diào)試工作,從而有助于發(fā)現(xiàn)運(yùn)行錯(cuò)誤。 12.2.1 調(diào)試工具 ( 1)“調(diào)試”工具欄 ( 2)“調(diào)試”菜單 12.2.2 如何開始調(diào)試 從“調(diào)試”菜單中選擇“啟動(dòng)調(diào)試”、“逐語句”或“逐過程”命令,或者在代碼編輯窗口中,單擊鼠標(biāo)右鍵,然后從快捷菜單中選擇“運(yùn)行到光標(biāo)處”命令,即開始調(diào)試過程。 如果選擇“啟動(dòng)調(diào)試”命令,則應(yīng)用程序啟動(dòng)并一直運(yùn)行到斷點(diǎn)。可以在任何時(shí)刻中斷執(zhí)行以檢查值或檢查程序狀態(tài)。 若選擇“逐語句”或“逐過程”,應(yīng)用程序啟動(dòng)并執(zhí)行,然后在第一行中斷。 如果選擇“運(yùn)行到光標(biāo)處”命令,則應(yīng)用程序啟動(dòng)并一直運(yùn)行到斷點(diǎn)或光標(biāo)位置,具體看是斷點(diǎn)在前還是光標(biāo)在前??梢栽谠创翱谥性O(shè)置光標(biāo)位置。某些情況下,不出現(xiàn)中斷,這意味著執(zhí)行始終未到達(dá)設(shè)置光標(biāo)處的代碼。 12.2.3 設(shè)置斷點(diǎn) 斷點(diǎn)是在程序中設(shè)置的一個(gè)位置,程序執(zhí)行到些位置時(shí)中斷(或暫停)。斷點(diǎn)的作用是在調(diào)試程序時(shí),當(dāng)程序執(zhí)行到斷點(diǎn)的語句時(shí)會(huì)暫停程序的運(yùn)行,供程序員檢查這一位置上程序元素的運(yùn)行情況,這樣有助于定位產(chǎn)生錯(cuò)誤輸出或出錯(cuò)的代碼段。 設(shè)置和取消斷點(diǎn)的方法如下: 方法 1: 用鼠標(biāo)右鍵單擊某代碼行,從出現(xiàn)的快捷菜單中選擇“斷點(diǎn)” |“插入斷點(diǎn)”命令(設(shè)置斷點(diǎn))或者“斷點(diǎn)” |“刪除斷點(diǎn)”命令(取消斷點(diǎn))。 方法 2: 將光標(biāo)移至需要設(shè)置斷點(diǎn)的語句處,然后按 F9鍵。 12.2.4 定位錯(cuò)誤 當(dāng)某行代碼中出現(xiàn)錯(cuò)誤時(shí),該錯(cuò)誤會(huì)自動(dòng)添加到“錯(cuò)誤列表”和“輸出”窗口中。 可以使用“錯(cuò)誤列表”或“輸出”窗口來查找代碼中的錯(cuò)誤。 其操作是:雙擊“錯(cuò)誤列表”或“輸出”窗口中的項(xiàng),則光標(biāo)自動(dòng)跳到代碼編輯器中相應(yīng)的出錯(cuò)行。 有些語言會(huì)在編碼錯(cuò)誤下顯示一條波浪線。將鼠標(biāo)懸停在帶有波浪線標(biāo)記的代碼上可顯示一條消息,其中對錯(cuò)誤進(jìn)行了描述。 12.2.5 調(diào)試過程 先在某行設(shè)置斷點(diǎn),然后在調(diào)試器中按 F5鍵運(yùn)行應(yīng)用程序,應(yīng)用程序會(huì)在該行停止,此時(shí)可以檢查任何給定變量的值,或觀察執(zhí)行跳出循環(huán)的時(shí)間和方式。 按 F10鍵逐行單步執(zhí)行代碼。 12.2.6 顯示調(diào)試信息 在 C#程序中斷的狀況下,可以將鼠標(biāo)放在希望觀察的執(zhí)行過的語句變量上面,調(diào)試器就會(huì)自動(dòng)顯示執(zhí)行到斷點(diǎn)時(shí)該變量的值,如下圖: 也可以在某個(gè)對象上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“快速監(jiān)視”命令,即可觀察到對象中各個(gè)元素的值,如下圖: 12.3 異常處理 異常處理語句 1. try catch語句 try /可能產(chǎn)生異常的程序代碼 catch(異常類型 1 異常類對象 1) /處理異常類型 1的異??刂拼a catch(異常類型 n 異常類對象 n) /處理異常類型 n的異??刂拼a 【 例 12.2】 創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序 Proj12-2項(xiàng)目,通過 try catch語句捕捉整數(shù)除零錯(cuò)誤。 namespace Proj12_2 class Program static void Main(string args) int x = 5,y = 0; try /try.catch語句 x = x/y; /引發(fā)除零錯(cuò)誤 catch (Exception err) /捕捉該錯(cuò)誤 Console.WriteLine(0,err.Message); /顯示錯(cuò)誤信息 輸出:試圖除以零。 2. try catch finally語句 同 try catch語句相比, try catch finally語句增加了一個(gè) finally塊,其作用是不管是否發(fā)生異常,即使沒有 catch塊,都將執(zhí)行 finally塊中的語句,也就是說, finally塊始終會(huì)執(zhí)行,而與是否引發(fā)異?;蛘呤欠裾业脚c異常類型匹配的catch塊無關(guān)。其余與 try catch語句相同。 finally塊通常用來釋放資源,而不用等待由運(yùn)行庫中的垃圾回收器來終結(jié)對象。 【 例 12.3】 創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序 Proj12-3項(xiàng)目,說明finally塊的作用。 namespace Proj12_3 class Program static void Main(string args) int s = 10, i; int a = new int5 1, 2, 3, 0, 4 ; try for (i = 0; i a.Length; i+) Console.Write(0 , s / ai); Console.WriteLine(); catch (Exception err) Console.WriteLine(0, err.Message); finally Console.WriteLine(執(zhí)行 finally塊 ); 運(yùn)行結(jié)果 3. throw語句 throw語句有兩種使用方式: ( 1)直接拋出異常; ( 2)在出現(xiàn)異常時(shí),通過含有 catch塊對其進(jìn)行處理并使用throw語句重新把這個(gè)異常拋出并讓調(diào)用這個(gè)方法的程序進(jìn)行捕捉和處理。 throw語句的使用語法格式如下: throw 表達(dá)式 ; 其中“表達(dá)式”類型必須是 System.Exception或從System.Exception派生的類的類型。 throw語句也可以不帶“表達(dá)式”,此時(shí)只能用在 catch塊中,在這種情況下,它重新拋出當(dāng)前正在由 catch塊處理的異常。 12.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論