已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第 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簡(jiǎn)寫為Int)、遺漏了某些必須的語句成分等,那么 C#在編譯應(yīng)用程序時(shí)就會(huì)檢測(cè)到這些錯(cuò)誤,并提示相應(yīng)的錯(cuò)誤信息。 代碼加行號(hào): 選擇“工具” |“選項(xiàng)”命令,在出現(xiàn)的“選項(xiàng)”對(duì)話框中選擇“文本編輯器” |“C#”|“常規(guī)”選項(xiàng),出現(xiàn)如圖 12.2所示的對(duì)話框。例如,勾選“行號(hào)”則在代碼的每一行前顯示該行的行號(hào),還可以通過選擇“ 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)??梢栽谌魏螘r(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)在前。可以在源窗口中設(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)記的代碼上可顯示一條消息,其中對(duì)錯(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è)對(duì)象上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“快速監(jiān)視”命令,即可觀察到對(duì)象中各個(gè)元素的值,如下圖: 12.3 異常處理 異常處理語句 1. try catch語句 try /可能產(chǎn)生異常的程序代碼 catch(異常類型 1 異常類對(duì)象 1) /處理異常類型 1的異??刂拼a catch(異常類型 n 異常類對(duì)象 n) /處理異常類型 n的異常控制代碼 【 例 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é)對(duì)象。 【 例 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塊對(duì)其進(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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職畜牧獸醫(yī)(飼料配方設(shè)計(jì))試題及答案
- 7.1《誰先走》(教學(xué)課件)-五年級(jí) 數(shù)學(xué)上冊(cè) 北師大版
- 制藥廠復(fù)工安全生產(chǎn)培訓(xùn)課件
- 工程安全基本知識(shí)培訓(xùn)課件
- 手術(shù)AI在日間手術(shù)中的效率提升
- 醫(yī)院防火巡查、檢查制度
- 成分輸血在產(chǎn)后大出血搶救中的策略
- 高管輔導(dǎo)指導(dǎo)協(xié)議
- 人工智能軟件開發(fā)許可協(xié)議
- 客戶聯(lián)系嘗試意向協(xié)議
- 急性呼吸道梗阻
- 公司特殊貢獻(xiàn)獎(jiǎng)管理制度
- 小學(xué)語文課堂板書設(shè)計(jì)
- GB/T 1040.1-2025塑料拉伸性能的測(cè)定第1部分:總則
- GB/T 40565.2-2025液壓傳動(dòng)連接快換接頭第2部分:平面型
- 2025-2030中國(guó)曲氟尿苷替匹嘧啶片行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- GB/T 3543.11-2025農(nóng)作物種子檢驗(yàn)規(guī)程第11部分:品種質(zhì)量品種真實(shí)性鑒定
- 人力資源有限公司管理制度
- 2024年高中語文選擇性必修上冊(cè)古詩文情境式默寫(含答案)
- 部編人教版4年級(jí)上冊(cè)語文期末復(fù)習(xí)(單元復(fù)習(xí)+專項(xiàng)復(fù)習(xí))教學(xué)課件
- 2024-2025學(xué)年云南省玉溪市八年級(jí)(上)期末英語試卷(含答案無聽力原文及音頻)
評(píng)論
0/150
提交評(píng)論