第12章 异常处理和注意事项.ppt

第12章 异常处理和注意事项

国防科技大学计算机学院 第12章 异常处理和注意事项 12.1 错误和异常处理 12.2 C#编程规则 12.3 小结 12.1 错误和异常处理 错误可以分为以下3类。 语法错误:程序代码的编写中,没有按照规定的语法则会产生语法错误。 逻辑错误:程序逻辑处理出现的错误。逻辑错误会导致实际处理结果和预测结果不相符。 运行时错误:该错误通常表现为内存泄露、以零作除数等,这些异常会在运行时出现,难以确定错误起因。 12.1.1 异常处理类 Exception是异常类的基类。 Exception类的常用属性:Message、Data、Source、StackTrace等。 异常类中最重要的属性就是Message属性和StackTrace属性。Message属性中包含了出错的原因。 StackTrace属性记录了出错的详细方法名称。 异常可由系统抛出,也可由客户程序使用throw关键字引发 12.1.1 异常处理类 异常继承体系: 12.1.1 异常处理类 常用系统异常类: OutOfMemoryException:没有足够的内存继续执行程序引发的异常; InvalidCastException:因无效类型转换或显式转换引发的异常; OverflowException进行算术运算、类型转换或转换操作导致溢出的异常; ApplicationException:是第三方定义的异常基类 ,此异常只能由用户程序引发,而不能由系统引发。 12.1.2 捕获异常方式 错误发现方式 : 使用调试器测试:通常每种开发语言环境都有调试器,并且都方便实用。 单元测试:即针对程序模块进行的测试。 集成测试:也称为联合测试或组装测试。 确认测试:也称为有效性测试。确认测试通常也使用黑盒测试方式,需要根据用户的需求输入一些数据,以检查软件是否可以正常运行。 12.1.2 捕获异常方式 使用调试器进行调试的方式: 断点:是程序执行暂停的地方。3个方法设置断点,在菜单栏中单击【调试】|【新建断点】命令,或者在行的最左边单击,或者按【F9】键。只需再执行一遍和设置断点相同的操作即可取消断点。 执行光标:执行光标一般黄色的,用于标识程序当前运行到的行。 调试工具栏:是包含调试时的常用命令的工具栏 ,包括启动调试、全部中断、停止调试、重新启动、显示下一语句、逐语句、逐过程和跳出命令按钮。 断点管理窗口 自动窗口 局部变量窗口 监视窗口 即时窗口 12.1.2 捕获异常方式 断点管理窗口:该窗口列出了所有断点,其中每一行都代表一个断点,每个断点都由所在文件、条件、命中次数等项来描述。 自动窗口:必须在调试运行时才能打开 ,“自动窗口”自动跟踪运行光标的当前行和下一行的变量,显示变量列表和变量当前值。“自动窗口”的变量是系统自动跟踪的,无需自行添加。而且,当运行光标所在语句行有方法调用时,“自动窗口”将显示该方法以及包含该方法调用的所有方法的返回值。 12.1.2 捕获异常方式 局部变量窗口:局部变量窗口跟踪当前局部范围内所有变量,跟踪的局部范围就是该方法的作用范围,也就是说局部变量窗口可以显示方法内出现的所有变量。 监视窗口:可以自定义要跟踪的变量 。 即时窗口:“即时窗口”可以不在调试时执行。如果在调试中执行,在“即时窗口”里可以计算表达式、执行语句、跟踪变量等。 12.1.2 捕获异常方式 结构化异常处理 :对于结构化异常处理,使用try catch语句结构来捕获和处理错误 。如果进行了异常处理,那么CLR将调用异常处理代码;如果未进行异常处理,那么CLR会终止程序的执行并弹出错误提示窗口。其语法形式为: try { 正常处理模块 } Catch(Exception e) { 错误处理模块 } 12.1.2 捕获异常方式 示例: static void Main(string[] args) { int[] a = new int[5]; try { a[10] = 1; } catch (Exception e) { Console.WriteLine(数组访问错误,{0}, e.Message); } Console.ReadLine(); } 12.1.3 自定义异常处理类 自定义异常类语法形式如下。 public class UserMessageException :ApplicationException { public UserMessageException(String msg):base(msg) {} } 对于自定义异常处理类,需要人为引发异常,因此需要使用throw关键字

文档评论(0)

1亿VIP精品文档

相关文档