第7章异常、结构与枚举.ppt

上传人:本田雅阁 文档编号:2257721 上传时间:2019-03-12 格式:PPT 页数:24 大小:953.51KB
返回 下载 相关 举报
第7章异常、结构与枚举.ppt_第1页
第1页 / 共24页
第7章异常、结构与枚举.ppt_第2页
第2页 / 共24页
第7章异常、结构与枚举.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章异常、结构与枚举.ppt》由会员分享,可在线阅读,更多相关《第7章异常、结构与枚举.ppt(24页珍藏版)》请在三一文库上搜索。

1、第七章,异常、结构与枚举,目标,理解如何调试应用程序和排除错误 掌握如何测试 C# 应用程序 了解测试和调试的区别 在程序中进行错误捕获和错误处理,简介,应用程序开发,可以安装在客户端机器上,应用程序必须,无错误 无故障 可靠 稳健,查找和排除错误或故障称为调试,异常,网上银行,张三转帐25000到李四的帐面上,0,20,000,数据库,系统将查询发送到数据库中,tranfer_money() sendquery(); . .,余额 20000-25000,程序崩溃,拒绝交易,“C#”中的异常,C# 中的异常处理,. INPUT Divisor IF Divisor = 0 THEN Resu

2、lt = Divident/Divisor ,代码片段 1,输入除数,结果 =,_,0,2,4,GOTO PREVIOUS LINE,触发异常处理程序,C# 中的异常处理,. INPUT Divisor Result = Divident/Divisor ,代码片段 1,“用户自定义”错误检查机制,难以检查输入的任何“特殊字符”,IF Divisor = 0 THEN GOTO PREVIOUS LINE IF Divisor 0 THEN PRINT “无效输入”,运行库,运行库应当提供“错误检查机制”,System.Exception 3-1,System.Exception,System

3、.Exception,在 C# 程序中,引发异常共有以下两种方式,使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码 使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常,Try.Catch.Finally,try 和 catch 块,滤水器,filter_water() try water(); catch impurities.Show(); . .,过滤水,杂质,/程序代码,/错误处理代码,try /程序代码 catch (IOException E) /错误处理代码 ,try 和 catch 块,try /程序代码 c

4、atch (IOException E) /错误处理代码 ,I/O 设备可以生成错误,try 和 catch 块,try /程序代码 catch( E) /错误处理代码 ,可处理系统中的任何一种异常,System.Exception,try 和 catch 块,if (UserInput 100) throw new InvalidNumberInput (UserInput + “不是有效输入 (请输入 1 和 100 之间的数字)”); ,throw 可用来引发自定义异常“InvalidNumberInput”,使用 finally,try /程序代码 catch /错误处理代码 fina

5、lly /finally 代码 ,无论控制流如何都会执行,多重 catch 块,try /程序代码 catch (IOException E) /错误处理代码 catch (OutOfMemoryException E) /错误处理代码 ,用于捕捉两种异常的“catch”块,多重 catch 块,public class MyCustomException : System.ApplicationException public MyCustomException(string message):base(message) try quotient = dividend /divisor; c

6、atch(MyCustomExeption ex) Console.WriteLine(ex.Message); ,. . if(divisor = 0) throw new MyCustomException(“除数不能为零“); ,示例-建立自定义异常,using System; public class EmailErrorException:ApplicationException public string _message; /重写构造函数 public EmailErrorException():base() _message = null; public EmailErrorE

7、xception(string message):base() _message = message.ToString(); public EmailErrorException(string message, Exception myNew):base(message,myNew) _message = message.ToString(); /Message属性的重载 public override string Message get return “Email格式错误。“; ,示例-throw自定义异常,private bool SaveInfo(string name, string

8、 email) string subStrings = email.Split(); /如果输入的Email不是被“”字符分割成两段,则抛出Email错误异常 if(subStrings.Length != 2) throw new EmailErrorException(); else int index = subStrings1.IndexOf(“.“); /查找被“”字符分成的两段的后一段中“.”字符的位置,没有“.” /或者“.”字符是第一个字符,则抛出EmailErrorException异常 if(index = 0) throw new EmailErrorException(

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

10、Method1() /structMethod1 实现 ,自定义数据类型 可以在其内部定义方法 无法实现继承 属于值类型 主要结构:,struct student public int stud_id; public string stud_name; public float stud_marks; public void show_details() /显示学生详细信息 ,结构,数据成员,方法,所有与 Student 关联的详细信息都可以作为一个整体进行存储和访问,枚举,public class Holiday public enum WeekDays Monday, Tuesday, W

11、ednesday, Thursday, Friday public void GetWeekDays (String EmpName, WeekDays DayOff) /处理工作日 static void Main() Holiday myHoliday = new Holiday(); myHoliday.GetWeekDays (“Richie“, Holiday.WeekDays.Wednesday); ,枚举(Enum,Enumerator 的缩写)是一组已命名的数值常量 用于定义具有一组特定值的数据类型 枚举以 enum 关键字声明,Wednesday = 2,枚举(续),C# 中

12、的枚举包含与值关联的数字 默认情况下,将 0 值赋给枚举的第一个元素,然后对每个后续的枚举元素按 1 递增 在初始化过程中可重写默认值,public enum WeekDays Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday=5 ,总结,调试是搜寻和消除应用程序中的错误的过程 语法错误表示编译器无法理解代码 调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行 “局部变量”窗口允许用户监控当前程序中所有变量的值 单元测试和集成测试是测试大型应用程序的常用技术 当应用程序遇到运行时错误时,就会引发异常 C# 中的所有异常都派生自 Exception 类,总结,C# 提供了以下类型的循环结构: while 循环 do 循环 for 循环 foreach 循环 C# 中的结构可以在其内部定义方法并可包括一个构造函数 枚举是一组已命名的数值常量,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1