欢迎来到天天文库
浏览记录
ID:19802180
大小:110.00 KB
页数:7页
时间:2018-10-06
《第14章 异常处理及跟踪调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第14章异常处理与跟踪调试在程序编制的过程中,总是没有办法避免错误,然而,对于使用方法引发的错误要在程序的执行过程中尽可能做出处理,以便使我们说的异常处理;另外,对于每个比较大的软件来说,在程序测试的过程中往往会出现错误,但是,查找错误的位置要比改正错误难得多,所以,对于一个开发平台,C#提供了多种调试方法。本章简单了解异常处理与跟踪调试。14.1异常处理在任何情况下,程序都不能是完美无缺,毫无错误的,所以在程序的编制过程中,程序都必须能处理可能出现的错误,C#提供处理错误的机制,即使用异常类Exception为每种错误提供定制的处理,并把识别错误的代码和处理错误的代码分离开来
2、。C#提供的结构化处理异常的方法,使用try语句提供的控制结构检测代码中的异常并做出相应的处理。try语句有三种方式:l用try-catch捕获异常l用try-finally清除异常l用try-catch-finally处理所有的异常14.1.1try-catch捕获异常正常情况下,程序流进入try控制块,如果没有错误发生,就会正常操作。当程序流离开try控制块后,如果没有发生错误,将执行catch后的finally语句块或顺序执行;当执行try时发生错误,程序留就会跳转到相应的catch语句块。如【例14-1】。【例14-1】在TextBox控件中接受两个数,计算它们的商。该
3、例中需要从利用TextBox的Text属性接受数字,因为Text属性值描述的类型为字符串型,所以在程序运行的过程中,可能引发异常;另外,除数不能为0,否则,引发异常。程序的界面设置如图14-1。图14-1界面设计图14-2由a引发的异常“计算a/b”的代码如下:7privatevoidbutton1_Click(objectsender,System.EventArgse){inta=1,b=1,c=1;try{a=Convert.ToInt32(textBox1.Text);}catch{MessageBox.Show("请将a的值输入为数字");return;}try{b=
4、Convert.ToInt32(textBox2.Text);}catch{MessageBox.Show("请将b的值输入为数字");return;}try{c=a/b;}catch(DivideByZeroException){MessageBox.Show("除数不能为0");return;}MessageBox.Show("整数a与整数b的商为"+c.ToString());}图14-3由b引发的异常图14-4除数为0的异常图14-5正常情况程序的运行结果:①当在textBox1中输入不是数字时,入图14-3,引发下面的异常:catch{MessageBox.Show(
5、"请将a的值输入为数字");return;}②当在textBox2中输入不是数字时,入图14-4,引发下面的异常:catch{MessageBox.Show("请将b的值输入为数字");return;}7③当在textBox2中输入数据为0时,将引发除数不能为0的异常,如图14-4。④正常情况下,结果为两个数相除得到的整数,如图14-5所示。14.1.2try-finally清除异常如果你关心清除异常而不是错误处理,try-finally清除异常能帮助你实现。它不仅抑制了出错消息,而且所有包含在finally块中的代码在异常被引发后仍然会被执行。尽管程序不正常终止,但你还可以为
6、用户获取一条消息,如【例14-2】【例14-2】检查文件是否存在,退出时显示“谢谢您使用本软件”。本例中检查文件的存在与否,使用try-finally清除异常实现消息的显示。当文件存在时运行结果如图14-6所示;当文件不存在时运行结果如图14-7所示。代码如下:privatevoidbutton1_Click(objectsender,System.EventArgse){try{if(File.Exists(textBox1.Text)){label2.Text="该文件存在";}elselabel2.Text="该文件不存在";}finally{MessageBox.Sho
7、w("谢谢您使用本软件!");};}图14-6文件存在图14-7文件不存在14.1.3用try-catch-finally处理所有的异常应用程序最有可能的途径是合并前面两种错误处理技术——捕获错误、清除并继续执行应用程序。所有你要做的是在出错处理代码中使用try-catch-finally语句。如将【例14-3】。【例14-3】在【例14-1】的基础上,将a或b引发异常的情况合并,无论怎样发生异常,程序将改为下面的代码:privatevoidbutton1_Click(objectsende
此文档下载收益归作者所有