




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章異常處理機制和單元測試回顧與作業點評在 中“”符號在SQL語句中起到什么作用?C# 中調用存儲過程的步驟?預習檢查.NET 中所有異常的基類是什么?單元測試是做什么的,什么作用? 本章任務在數據訪問層進行異常處理 對數據訪問層進行單元測試 本章目標理解異常處理機制 掌握如何進行異常處理 掌握如何進行單元測試 為什么需要異常處理trade() sendquery(); . .賬戶姓名金額300123張三300124王五47,000311320李四020,000數據庫系統將查詢發送到數據庫中拒絕交易 余額 20000-25000錯誤 程序出現故障 系統崩潰為了防止系統崩潰我們需要使用異常處理
2、網上銀行:張三轉賬25000到李四的賬戶上異常處理代碼錯誤 公共語言運 行庫遇到意外 資源 不可用 異常 程序 執行異常處理 恢復程序 在.NET平臺下我們如何使用異常處理?首先要了解Exception類 Exception類型2-1.NET Framework 公共語言運行時引發的異常用戶程序引發的異常Exception類型2-2 屬性名稱 說 明Source 此屬性表示導致異常發生的應用程序或對象的名稱 Message提供引起異常的詳細信息StackTrace 此屬性提供在堆棧上所調用方法的詳細信息,并首先顯示最近調用的方法 InnerException對內部異常的引用,如果此異常基于前一
3、個異常,則內部異常指最初發生的異常回顧:異常處理結構try /catch(異常對象) /異常處理常見的異常處理結構try /finally /對象清理的代碼try /catch(異常對象) /異常處理finally /對象清理的代碼定位異常類型在C# 中如何準確的 確定異常的類型?try /引發IO 異常 /引發數據庫操作異常 /引發其它異常catch(Exception ex) /異常處理try /引發IO 異常 /引發數據庫操作異常 /引發其它異常catch(IOException ex) /處理IO 異常catch(SqlException ex) /處理SQL 異常 catch(Exc
4、eption ex) /處理其它異常多路捕獲多路捕獲異常處理多路捕獲異常處理的代碼結構try /可能引發 異常的代碼catch(異常類型1 ex) /處理異常類型1 catch(異常類型N ex) /處理異常類型N catch(Exception ex) /處理其它異常注意:子類異常在前, 基類異常在后演示示例:多路捕獲異常處理拋出異常3-1在C# 中如何自定義代碼拋出異常?throw 異常對象只能在catch 塊中使用throw 可以在任何位置使用或拋出異常3-2用法1:使用throw 拋出新的異常void Buy(decimal amount) if (amount 0) throw ne
5、w Exception(錯誤的金額); 演示示例:使用throw 拋出新的異常.catch(Exception ex) throw new Exception(未知錯誤!請聯系管理員); 拋出異常3-3用法2:使用throw 重新拋出異常try /可能引發異常的代碼 catch (SqlException ex) throw ex;catch (Exception ex) throw ex;try /可能引發異常的代碼 catch (SqlException ex) throw;catch (Exception ex) throw;演示示例:使用throw 重新拋出異常指導登錄功能的異常處理2
6、-1 訓練要點:使用throw語句拋出異常異常的多路捕獲 需求說明:實現登錄功能數據訪問層和表示層方法的異常處理在數據訪問層多路捕獲異常,并重新拋出在表示層多路捕獲異常,數據訪問異常提示“數據庫操作失敗”,其它異常提示“發生未知異常,請聯系廠商” 講解需求說明指導登錄功能的異常處理2-2 實現思路:數據訪問層方法中添加異常處理,將捕捉的異常拋出 在表示層捕捉異常SQLException,提示“數據庫操作失敗” 在表示層捕捉異常Exception,提示“發生未知異常,請聯系廠商” 完成時間:10分鐘為什么需要自定義異常如果刪除一名學生引發了 SQLException, 是數據庫連接中斷,還是違反
7、了外鍵約束?使用自定義異常可以更準確的體現程序的 異常情況,適應.NET 標準異常沒有定義的場合 使用自定義異常實現自定義異常類的步驟 :1、確定基類: Exception 或 ApplicationException2、實現構造函數3、標記System.Serializable特性 演示示例:實現自定義異常指導捕獲刪除學生的異常2-1 訓練要點:編寫自定義異常類 在分層架構中捕獲異常 需求說明:實現右鍵菜單刪除學生的功能捕捉使用Delete刪除學生時,學生成績表的外鍵約束的異常 講解需求說明指導捕獲刪除學生的異常2-2 實現思路:定義自定義異常在數據訪問層捕獲自定義異常,拋出 如果SqlEx
8、ception的Number屬性為547,則拋出自定義異常在表示層捕獲外鍵約束異常 完成時間:25分鐘指導捕獲添加學生的主鍵異常2-1 訓練要點:編寫自定義異常類 在分層架構中捕獲異常 需求說明:捕捉添加學生時,由于學號重復產生的主鍵異常 講解需求說明指導捕獲添加學生的主鍵異常2-2實現思路:定義自定義異常在數據訪問層捕獲自定義異常,拋出 如果SqlException的Number屬性為2627,則拋出自定義異常在表示層捕獲外鍵約束異常完成時間:10分鐘共性問題集中講解常見調試問題及解決辦法代碼規范問題共性問題集中講解異常處理最佳實踐原則1:不要輕易屏蔽異常 原則3:重新拋出異常優先使用 “t
9、hrow”,而不是 “throw 異常對象”原則2:不要使用異常處理替代程序邏輯 try int age = Convert.toInt32(txtAge.Text);catch MessageBox.Show(必須輸入數字! );try /可能引發異常的代碼catch小結使用異常處理的主要目的是什么?.NET Framework引發的異常有哪兩類?如何捕獲異常?為什么需要單元測試單元測試是保證軟件質量的具體操作方法什么是單元測試PDA在出廠之前,會對每一個零部件進行測試單元測試 什么是VSTS單元測試Visual Studio 集成的單元測試框架使用VSTS編寫單元測試使用VSTS 做單元測
10、試的步驟1、創建測試項目2、編寫測試代碼3、運行測試,查看測試結果演示示例:創建單元測試常用的斷言方法 斷言類Assert 的常用方法方 法說 明AreEqual()測試指定的值是否相等,如相等,測試通過Inconclusive()表示一個未驗證的測試IsTrue()測試指定的條件是否為True,如果為True,測試通過IsNull()測試指定的對象是否為空引用,如果為空,測試通過IsNotNull()測試指定的對象是否為非空,如果不為空,測試通過IsFalse()測試指定的條件是否為False,如果該條件為False,測試通過代碼覆蓋單元測試的一個關鍵指標:代碼覆蓋率代碼覆蓋是度量單元測試運行時測試了多少代碼未測試到的代碼演示示例:查看代碼覆蓋率指導測試數據訪問層添加學生2-1訓練要點:設計測試用例 使用斷言 需求說明:創建單元測試項目,測試學生信息管理系統中數據訪問層添加學生的方法 講解需求說明指導測試數據訪問層添加學生2-2實現思路:創建單元測試項目 添加單元測試完成測試方法 運行測試項目并查看結果完成時間:20分鐘練習測試學生是否存在的方法 需求說明:編寫測試用例,測試學生存在性判斷方法的正確性 完成時間:15分鐘共性問題集中講解常見調試問題及解決辦法代碼規
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3634-2019船閘工程質量檢驗規范
- DB32/T 3218-2017公路工程控制模量樁復合地基技術規程
- DB31/T 893-2015公交車輛節油駕駛操作指南
- DB31/T 704-2013南美白對蝦親蝦培育技術規范
- DB31/T 684-2013老年照護等級評估要求
- DB31/T 1399-2023聚對苯二甲酸乙二醇酯(PET)瓶回收規程
- DB31/T 1259-2020保健食品經營管理規范
- DB31/T 1245-2020醫療應急救援車載移動醫院車輛管理要求
- DB31/ 807.1-2014重點單位保安服務要求第1部分:基本要求
- 2025有關物業維修合同范文
- 電力輸電線路施工安全培訓
- 體育中國學習通超星期末考試答案章節答案2024年
- 云南省普通高中學生綜合素質評價方案
- 數學家華羅庚課件
- 《人工智能基礎》課件-AI的前世今生:她從哪里來
- 西藏事業單位統一招聘考試真題
- 奶茶店食品安全管理制度文本
- 2025屆廣東省中山市實驗中學高三第二次聯考生物試卷含解析
- 血液透析高鉀血癥的護理查房
- 2024年南通市海門區名小六年級畢業考試語文模擬試卷
- 安全教育記錄表(防暑降溫教育)
評論
0/150
提交評論