測試和異常處理_第1頁
測試和異常處理_第2頁
測試和異常處理_第3頁
測試和異常處理_第4頁
測試和異常處理_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ACCP V4.0第九章第九章調(diào)試、測試和異常處理ACCP V4.02回顧 q WinForms單選按鈕控件允許用戶進(jìn)行設(shè)置q WinForms的圖片框控件允許用戶在窗體上添加和顯示位圖、元文件、JPEG、GIF 或 PNG 等格式的圖形q WinForms的選項(xiàng)卡控件將類似的功能集中在一起,放在一個(gè)對話框或窗口中q WinForms的 HScrollBar 和 VScrollBar 用作水平和垂直滾動(dòng)條,分別以水平和垂直方式瀏覽(或滾動(dòng))整個(gè)文檔q 進(jìn)度條控件用于指示操作的進(jìn)度,并顯示排列在水平條中一定數(shù)目的矩形,通常通過在程序中設(shè)置其Value值來顯示任務(wù)完成的百分比ACCP V4.03目

2、標(biāo)q理解如何調(diào)試應(yīng)用程序和排除錯(cuò)誤q掌握如何測試 C# 應(yīng)用程序q了解測試和調(diào)試的區(qū)別q在程序中進(jìn)行錯(cuò)誤捕獲和錯(cuò)誤處理ACCP V4.04簡介應(yīng)用程序開發(fā)可以安裝在客戶端機(jī)器上應(yīng)用程序必須無錯(cuò)誤無故障 可靠穩(wěn)健查找和排除查找和排除錯(cuò)誤或故障稱為錯(cuò)誤或故障稱為調(diào)試調(diào)試ACCP V4.05調(diào)試的必要性 在事物處理過程中,系統(tǒng)顯示錯(cuò)誤消息系統(tǒng)發(fā)生故障系統(tǒng)發(fā)生故障必須重新輸入全部信息在部署應(yīng)用程序前必須先對其進(jìn)行調(diào)試ACCP V4.06錯(cuò)誤類型錯(cuò)誤類型語法錯(cuò)誤邏輯錯(cuò)誤運(yùn)行時(shí)錯(cuò)誤l語法錯(cuò)誤、缺少括號等l在編譯時(shí)確定l易于確定l錯(cuò)誤的算法導(dǎo)致錯(cuò)誤結(jié)果、公式錯(cuò)誤等 l在執(zhí)行過程中確定l難以調(diào)試l內(nèi)存泄漏、以

3、零作除數(shù)、異常l在運(yùn)行時(shí)確定l難以調(diào)試ACCP V4.07調(diào)試過程 5-1調(diào)試器觀察程序的運(yùn)行時(shí)行為 跟蹤變量的值確定語義錯(cuò)誤的位置查看寄存器的內(nèi)容查看內(nèi)存空間 ACCP V4.08調(diào)試過程 5-2暫停暫??稍诖a中插入“斷點(diǎn)”,以便在特定行處暫停執(zhí)行該代碼ACCP V4.09調(diào)試過程 5-3右鍵單擊所需代碼行,以設(shè)置斷點(diǎn)選擇“插入斷點(diǎn)”ACCP V4.010調(diào)試過程 5-4選擇“調(diào)試” “繼續(xù)”以便繼續(xù)執(zhí)行程序ACCP V4.011調(diào)試過程 5-5.NET 集成開發(fā)環(huán)境Debug模式Release模式ACCP V4.012 VS.NET 中的調(diào)試工具 5-1“局部變量”窗口ACCP V4.0

4、13 VS.NET 中的調(diào)試工具 5-2“監(jiān)視”窗口ACCP V4.014 VS.NET 的調(diào)試工具 5-3“快速監(jiān)視”對話框ACCP V4.015 VS.NET 中的調(diào)試工具 5-4“即時(shí)”窗口ACCP V4.016 VS.NET 中的調(diào)試工具 5-5l跨語言調(diào)試 l調(diào)試使用 .NET 框架編寫的應(yīng)用程序以及 Win32 本l 機(jī)應(yīng)用程序l加入正在運(yùn)行的程序l調(diào)試多個(gè)程序Visual Studio .NET 調(diào)試器的功能ACCP V4.017異常帳戶帳戶姓名姓名 余額余額300123張三300124王五47,000311320李四網(wǎng)上銀行網(wǎng)上銀行張三轉(zhuǎn)帳25000到李四的帳面上020,000

5、數(shù)據(jù)庫系統(tǒng)將查詢發(fā)送到數(shù)據(jù)庫中系統(tǒng)將查詢發(fā)送到數(shù)據(jù)庫中tranfer_money() sendquery(); . . 余額 20000-25000 程序崩潰程序崩潰拒絕交易拒絕交易錯(cuò)誤錯(cuò)誤 系統(tǒng)出現(xiàn)故障系統(tǒng)出現(xiàn)故障 “C#”中的異常 ACCP V4.018C# 中的異常處理2-1 .INPUT DivisorIF Divisor = 0 THENResult = Divident/Divisor.代碼片段 1輸入除數(shù)結(jié)果 =_0 24GOTO PREVIOUS LINE觸發(fā)異常處理程序ACCP V4.019 C# 中的異常處理2-2 .INPUT DivisorResult = Divide

6、nt/Divisor.代碼片段 1“用戶自定義”錯(cuò)誤檢查機(jī)制難以檢查輸入的任何難以檢查輸入的任何“特殊字符特殊字符”IF Divisor = 0 THEN GOTO PREVIOUS LINEIF Divisor 0 THEN PRINT “無效輸入”運(yùn)行庫運(yùn)行庫運(yùn)行庫應(yīng)當(dāng)提供“錯(cuò)誤檢查機(jī)制” ACCP V4.020System.Exception 3-1ACCP V4.021System.Exception 3-2屬性屬性MessageSourceStackTraceInnerExceptionACCP V4.022System.Exception 3-3在 C# 程序中,引發(fā)異常共有以下兩

7、種方式l使用顯式 throw 語句來引發(fā)異常。在此情況下,控制權(quán)將無條件轉(zhuǎn)到處理異常的部分代碼l使用語句或表達(dá)式在執(zhí)行過程中激發(fā)了某個(gè)異常的條件,使得操作無法正常結(jié)束,從而引發(fā)異常Try.Catch.FinallyACCP V4.023try 和 catch 塊 4-1濾水器濾水器filter_water() try water(); catch impurities.Show(); . .過濾水雜質(zhì)/程序代碼 /錯(cuò)誤處理代碼 try/程序代碼catch (IOException E)/錯(cuò)誤處理代碼ACCP V4.024try 和 catch 塊 4-2try/程序代碼catch (IOExc

8、eption E)/錯(cuò)誤處理代碼I/O 設(shè)備可以生成錯(cuò)誤ACCP V4.025try 和 catch 塊 4-3try/程序代碼catch( E)/錯(cuò)誤處理代碼可處理系統(tǒng)中的任何一種異常System.ExceptionACCP V4.026try 和 catch 塊 4-4 if (UserInput 100)throw new InvalidNumberInput(UserInput + “不是有效輸入(請輸入 1 和 100 之間的數(shù)字)”);throw 可用來引發(fā)自定義異?!癐nvalidNumberInput” ACCP V4.027使用 finallytry/程序代碼catch/錯(cuò)誤

9、處理代碼finally/finally 代碼無論控制流如何都會執(zhí)行ACCP V4.028多重 catch 塊 2-1try/程序代碼catch (IOException E)/錯(cuò)誤處理代碼catch (OutOfMemoryException E)/錯(cuò)誤處理代碼用于捕捉兩種異常的“catch”塊ACCP V4.029多重 catch 塊 2-2public class MyCustomException : System.ApplicationExceptionpublic MyCustomException(string message):base(message)try quotient

10、= dividend /divisor;catch(MyCustomExeption ex)Console.WriteLine(ex.Message);.if(divisor = 0) throw new MyCustomException(“除數(shù)不能為零);ACCP V4.030示例-建立自定義異常using System;public class EmailErrorException:ApplicationExceptionpublic string _message;/重寫構(gòu)造函數(shù)public EmailErrorException():base()_message = null;pu

11、blic EmailErrorException(string message):base()_message = message.ToString();public EmailErrorException(string message, Exception myNew):base(message,myNew)_message = message.ToString();/Message屬性的重載public override string Messagegetreturn Email格式錯(cuò)誤。;ACCP V4.031示例-throw自定義異常private bool SaveInfo(stri

12、ng name, string email)string subStrings = email.Split();/如果輸入的Email不是被“”字符分割成兩段,則拋出Email錯(cuò)誤異常if(subStrings.Length != 2) throw new EmailErrorException();elseint index = subStrings1.IndexOf(.);/查找被“”字符分成的兩段的后一段中“.”字符的位置,沒有“.” /或者“.”字符是第一個(gè)字符,則拋出EmailErrorException異常if(index = 0)throw new EmailErrorExcep

13、tion();/如果“.”字符是最后一個(gè)字符,拋出EmailErrorException異常if(subStrings1subStrings1.Length -1 = .)throw new EmailErrorException();return true;ACCP V4.032示例-Catch自定義異常private void btnSubmit_Click(object sender, System.EventArgs e)if(txtName.Text.Length = 0 & txtEmail.Text.Length = 0)MessageBox.Show(請?zhí)顚懶彰虴mail。, 填寫不完整, MessageBoxButtons.OK, MessageBoxIcon.Information);return;trySaveInfo(txtName.Text, txtEmail.Text);catch(EmailErrorException ex)MessageBox.Show(ex.Message, Email 格式錯(cuò)誤, System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information);return;MessageBox.Show(保存成功。, 成功, MessageB

溫馨提示

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

評論

0/150

提交評論