第七章异常处理

上传人:壹****1 文档编号:568509730 上传时间:2024-07-25 格式:PPT 页数:32 大小:2.19MB
返回 下载 相关 举报
第七章异常处理_第1页
第1页 / 共32页
第七章异常处理_第2页
第2页 / 共32页
第七章异常处理_第3页
第3页 / 共32页
第七章异常处理_第4页
第4页 / 共32页
第七章异常处理_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第七章异常处理》由会员分享,可在线阅读,更多相关《第七章异常处理(32页珍藏版)》请在金锄头文库上搜索。

1、第七章第七章调试、测试和异常处理目标v理解如何调试应用程序和排除错误v掌握如何测试 C# 应用程序v了解测试和调试的区别v在程序中进行错误捕获和错误处理2简介应用程序开发可以安装在客户端机器上应用程序必须无错误无故障 可靠稳健查找和排除查找和排除错误或故障称为错误或故障称为调试调试3调试的必要性 在事物处理过程中,系统显示错误消息系统发生故障系统发生故障必须重新输入全部信息在部署应用程序前必须先对其进行调试4错误类型错误类型语法错误逻辑错误运行时错误l语法错误、缺少括号等l在编译时确定l易于确定l错误的算法导致错误结果、公式错误等 l在执行过程中确定l难以调试l内存泄漏、以零作除数、异常l在运

2、行时确定l难以调试5调试过程 5-1调试器观察程序的运行时行为 跟踪变量的值确定语义错误的位置查看寄存器的内容查看内存空间 6调试过程 5-2暂停暂停可在代码中插入“断点”,以便在特定行处暂停执行该代码7调试过程 5-3右键单击所需代码行,以设置断点选择“插入断点”8调试过程 5-4选择“调试” “继续”以便继续执行程序9 VS.NET 中的调试工具 5-1“局部变量”窗口10 VS.NET 中的调试工具 5-2“监视”窗口11 VS.NET 的调试工具 5-3“快速监视”对话框12 VS.NET 中的调试工具 5-4“即时”窗口13 VS.NET 中的调试工具 5-5l跨语言调试 l调试使用

3、 .NET 框架编写的应用程序以及 Win32 本l 机应用程序l加入正在运行的程序l调试多个程序Visual Studio .NET 调试器的功能14调试过程.NET 集成开发环境Debug模式Release模式15异常帐户帐户姓名姓名 余额余额300123张三300124王五47,000311320李四网上银行网上银行张三转帐25000到李四的帐面上020,000数据库系统将查询发送到数据库中系统将查询发送到数据库中tranfer_money() sendquery(); . . 余额 20000-25000 程序崩溃程序崩溃拒绝交易拒绝交易错误错误 系统出现故障系统出现故障 “C#”中的

4、异常 16C# 中的异常处理2-1 .INPUT DivisorIF Divisor = 0 THENResult = Divident/Divisor.代码片段 1输入除数结果 =_0 24GOTO PREVIOUS LINE触发异常处理程序17 C# 中的异常处理2-2 .INPUT DivisorResult = Divident/Divisor.代码片段 1“用户自定义”错误检查机制难以检查输入的任何难以检查输入的任何“特殊字符特殊字符”IF Divisor = 0 THEN GOTO PREVIOUS LINEIF Divisor 0 THEN PRINT “无效输入”运行库运行库运

5、行库应当提供“错误检查机制” 18System.Exception 3-119System.Exception 3-2属性属性MessageSourceStackTraceInnerException20System.Exception 3-3在 C# 程序中,引发异常共有以下两种方式l使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码l使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常Try.Catch.Finally21try 和 catch 块 4-1滤水器滤水器filter_water() try water();

6、catch impurities.Show(); . .过滤水杂质/程序代码 /错误处理代码 try/程序代码catch (IOException E)/错误处理代码22try 和 catch 块 4-2try/程序代码catch (IOException E)/错误处理代码I/O 设备可以生成错误23try 和 catch 块 4-3try/程序代码catch( E)/错误处理代码可处理系统中的任何一种异常System.Exception24try 和 catch 块 4-4 if (UserInput 100)throw new InvalidNumberInput(UserInput +

7、 “不是有效输入(请输入 1 和 100 之间的数字)”);throw 可用来引发自定义异常“InvalidNumberInput” 25使用 finallytry/程序代码catch/错误处理代码finally/finally 代码无论控制流如何都会执行26多重 catch 块 2-1try/程序代码catch (IOException E)/错误处理代码catch (OutOfMemoryException E)/错误处理代码用于捕捉两种异常的“catch”块27多重 catch 块 2-2public class MyCustomException : System.Applicatio

8、nExceptionpublic MyCustomException(string message):base(message)try quotient = dividend /divisor;catch(MyCustomExeption ex)Console.WriteLine(ex.Message);.if(divisor = 0) throw new MyCustomException(“除数不能为零);28示例-建立自定义异常using System;public class EmailErrorException:ApplicationExceptionpublic string _

9、message; /重写构造函数public EmailErrorException():base()_message = null;public EmailErrorException(string message):base()_message = message.ToString();public EmailErrorException(string message, Exception myNew):base(message,myNew)_message = message.ToString(); /Message属性的重载public override string Messageg

10、etreturn Email格式错误。;29示例-throw自定义异常private bool SaveInfo(string name, string email)string subStrings = email.Split();/如果输入的Email不是被“”字符分割成两段,则抛出Email错误异常if(subStrings.Length != 2) throw new EmailErrorException();elseint index = subStrings1.IndexOf(.);/查找被“”字符分成的两段的后一段中“.”字符的位置,没有“.” /或 者 “.”字 符 是 第

11、一 个 字 符 , 则 抛 出EmailErrorException异常if(index = 0)throw new EmailErrorException();/如果“.”字符是最后一个字符,抛出EmailErrorException异常if(subStrings1subStrings1.Length -1 = .)throw new EmailErrorException();return true;30示例-Catch自定义异常private void btnSubmit_Click(object sender, System.EventArgs e)if(txtName.Text.Le

12、ngth = 0 & txtEmail.Text.Length = 0)MessageBox.Show(请填写姓名和Email。, 填写不完整, MessageBoxButtons.OK, MessageBoxIcon.Information);return;trySaveInfo(txtName.Text, txtEmail.Text);catch(EmailErrorException ex)MessageBox.Show(ex.Message, Email 格式错误, System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information);return;MessageBox.Show(保存成功。, 成功, MessageBoxButtons.OK, MessageBoxIcon.Information);31总结v调试是搜寻和消除应用程序中的错误的过程v语法错误表示编译器无法理解代码v调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行v“局部变量”窗口允许用户监控当前程序中所有变量的值v单元测试和集成测试是测试大型应用程序的常用技术v当应用程序遇到运行时错误时,就会引发异常vC# 中的所有异常都派生自 Exception 类32

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号