异常处理与跟踪调试_第1页
异常处理与跟踪调试_第2页
异常处理与跟踪调试_第3页
异常处理与跟踪调试_第4页
异常处理与跟踪调试_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、14.1 异常处理异常处理 C#提供了处理错误的机制,即使用异常类提供了处理错误的机制,即使用异常类Exception为每种错误提供定制的处理,并把识为每种错误提供定制的处理,并把识别错误的代码和处理错误的代码分离开来。别错误的代码和处理错误的代码分离开来。 捕获异常捕获异常 正常情况下,程序流进入正常情况下,程序流进入try控制块,如果控制块,如果没有错误发生,就会正常操作。当程序流离开没有错误发生,就会正常操作。当程序流离开try控制块后,如果没有发生错误,将执行控制块后,如果没有发生错误,将执行catch后的后的finally语句块或顺序执行;当执行语句块或顺序执行;当执行try时时第第

2、14章章 异常处理与跟踪调试异常处理与跟踪调试发生错误,程序流就会跳转到相应的发生错误,程序流就会跳转到相应的catch语句语句块,如块,如【例例14-1】。【例例14-1】在在TextBox控件中接受两个数,计算控件中接受两个数,计算它们的商。它们的商。 该例中需要利用该例中需要利用TextBox的的Text属性接受数属性接受数字,因为字,因为Text属性值描述的类型为字符串型,属性值描述的类型为字符串型,所以在程序运行的过程中,可能引发异常;另所以在程序运行的过程中,可能引发异常;另外,除数不能为外,除数不能为0,否则,引发异常。,否则,引发异常。程序运行结果如图程序运行结果如图14-2所

3、示。所示。【计算计算a/b】按钮的按钮的Click事件代码为:事件代码为: try a=Convert.ToInt32(textBox1.Text); catchMessageBox.Show(请将请将a的值输入为数字的值输入为数字); return; 图图14-2 由由a引发的异常引发的异常 try b=Convert.ToInt32(textBox2.Text); catch MessageBox.Show(请将请将b的值输入为数字的值输入为数字); return; try c=a/b; catch(DivideByZeroException) / 如果发生的异如果发生的异常为除以常为除以

4、0 MessageBox.Show(除数不能为除数不能为); return; MessageBox.Show(整数整数a与整数与整数b的商为的商为+c.ToString();清除异常清除异常 如果关心的是清除异常而不是错误处理,如果关心的是清除异常而不是错误处理,可以使用可以使用tryfinally清除异常来实现。它不仅清除异常来实现。它不仅抑制了出错消息,而且所有包含在抑制了出错消息,而且所有包含在finally块中块中的代码在异常被引发后仍然会被执行。的代码在异常被引发后仍然会被执行。 尽管程序不正常终止,但还可以为用户获尽管程序不正常终止,但还可以为用户获取一条消息。取一条消息。【例例1

5、4-2】检查文件是否存在,退出时显示检查文件是否存在,退出时显示“谢谢谢您使用本软件谢您使用本软件”。 本例中检查文件的存在与否,使本例中检查文件的存在与否,使tryfinally清除异常实现消息的显示。清除异常实现消息的显示。 图14-7 文件存在 图14-8 文件不存在 【检查检查】按钮的按钮的Click事件代码为:事件代码为: try if(File.Exists(textBox1.Text) label2.Text=该文件存在该文件存在; else label2.Text=该文件不存在该文件不存在; finallyMessageBox.Show(谢谢您使用本软谢谢您使用本软件件!);用

6、用trycatchfinally处理所有的异常处理所有的异常 应用程序最有可能的途径是合并前面两种应用程序最有可能的途径是合并前面两种错误处错误处 理技术理技术捕获错误、清除并继续执行捕获错误、清除并继续执行应用程序。所有要做的是在出错处理代码中使应用程序。所有要做的是在出错处理代码中使用用try-catch-finally语句。语句。【例例14-3】在在【例例14-1】的基础上,将的基础上,将a或或b引发引发异常的情况合并,无论怎样发生异常,程序都异常的情况合并,无论怎样发生异常,程序都将执行将执行finally语句块。语句块。修改修改【计算计算a/b】按钮的按钮的Click事件代码为:事件

7、代码为: int a=1,b=1, c=1;try a=Convert.ToInt32(textBox1.Text); b=Convert.ToInt32(textBox2.Text); c=a/b; MessageBox.Show(a/b的值为的值为+c.ToString(); catch(FormatException) MessageBox.Show(请将请将a或或b的值输入为数的值输入为数字字); catch(DivideByZeroException) MessageBox.Show(除数不能为除数不能为 ); finally / 清除异常清除异常 MessageBox.Show(无

8、论发生什么异常,我都无论发生什么异常,我都会显示会显示); 抛出异常抛出异常 当你必须捕获异常时,其他人首先必须首当你必须捕获异常时,其他人首先必须首先能够引发异常。而且,不仅其他人能够引发,先能够引发异常。而且,不仅其他人能够引发,你也可以负责引发。你也可以负责引发。throw方法用于引发一个方法用于引发一个异常,当使用该方法时,可以对方法调用时出异常,当使用该方法时,可以对方法调用时出现的异常进行描述。如程序中使用下列语句:现的异常进行描述。如程序中使用下列语句:throw new DivideByZeroException(除数不能为除数不能为0!);则在引发则在引发DivideByZe

9、roException异常时显示异常时显示“除除数不能为数不能为0!”的信息。的信息。常用的异常类常用的异常类 表表14-1给出了给出了System名称空间中常用的异名称空间中常用的异常类。常类。用户自定义异常用户自定义异常 除了预定义的异常外,还可以通过继承除了预定义的异常外,还可以通过继承Exception创建自己的异常类。创建自己的异常类。 声明一个异常,格式如下:声明一个异常,格式如下:class ExceptionName:Exception 引发自己的异常的格式如下:引发自己的异常的格式如下:throw(ExceptionName);14.2 跟踪和调试跟踪和调试 C#中提供对程序

10、编译的两种辅助手段,用中提供对程序编译的两种辅助手段,用于检查或发现程序中的错误,跟踪和调试。于检查或发现程序中的错误,跟踪和调试。跟踪跟踪 在在.NET中,针对调试检查运行情况和处理中,针对调试检查运行情况和处理错误等方面,提供了两种级别的跟踪服务:页错误等方面,提供了两种级别的跟踪服务:页面级跟踪及应用程序级跟踪。提供了处理跟踪面级跟踪及应用程序级跟踪。提供了处理跟踪和断言的两个类:和断言的两个类:Trace和和Debug,这两个类都,这两个类都来自来自System.Diagnostics命名空间。命名空间。调试调试 调试是发现并改正程序中错误的过程,在调试是发现并改正程序中错误的过程,在C#中主要表现在以下几方面:中主要表现在以下几方面: 输出调试信息。输出调试信息。 在执行应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论