第7章 调试、测试和异常处理_第1页
第7章 调试、测试和异常处理_第2页
第7章 调试、测试和异常处理_第3页
第7章 调试、测试和异常处理_第4页
第7章 调试、测试和异常处理_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、ZJWCHC第七章第七章结构化异常处理结构化异常处理2知识点知识点结构化异常处理结构化异常处理异常类异常类自定义异常自定义异常3结构化异常处理结构化异常处理在 C# 程序中,引发异常共有以下两种方式l使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码l使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常Try.Catch.Finally4异常异常帐户姓名 余额300123小王小王300124小黄小黄7000311320小李小李网上银行网上银行某学生小王转帐5000到其朋友小李的帐面上04500数据库系统将查询发送到数据库中系统

2、将查询发送到数据库中tranfer_money() sendquery(); . . 余额 4500-5000 程序崩溃程序崩溃拒绝交易拒绝交易错误错误 系统出现故障系统出现故障 “C#”中的异常 5try catch 结构结构滤水器滤水器filter_water() try water(); catch impurities.Show(); . .过滤水杂质/程序代码 /错误处理代码 try/程序代码catch (IOException E)/错误处理代码6catch 块中的错误筛选块中的错误筛选try/程序代码catch (IOException E)/错误处理代码引发I/O 设备异常7t

3、ry catch 结构结构try/程序代码catch( E)/错误处理代码可处理系统中的任何一种异常System.Exception8try catch 结构结构if (grade 150)throw new InvalidNumberInput(grade+ “不是合法的成绩”);throw 可用来引发自定义异常“InvalidNumberInput” 9使用使用 finallytry/程序代码catch/错误处理代码finally/finally 代码无论有否异常该代码都会执行10多重多重 catch 块块try/程序代码catch (IOException E)/错误处理代码catch

4、(OutOfMemoryException E)/错误处理代码用于捕捉两种异常的“catch”块11多重多重 catch 块块public class MyException : System.ApplicationExceptionpublic MyException(string message):base(message)try int c= a /b;catch(MyExeption ex) Console.WriteLine(ex.Message);.if(b = 0) throw new MyException(“除数不能为零);常用异常类常用异常类.NET框架针对系统及应用程序中

5、的异常,设框架针对系统及应用程序中的异常,设计了一个基计了一个基system.Exception类,所有异类,所有异常类都继承自常类都继承自Exception。 (1)从systemException派生的预定义公共语言运行派生的预定义公共语言运行库异常类库异常类 (2)从ApplicationException派生的用户定义的应派生的用户定义的应用程序异常类用程序异常类* 常用的异常类属性是常用的异常类属性是message属性,他是一个字符串,属性,他是一个字符串,可以向用户输出异常信息。可以向用户输出异常信息。12抛出异常抛出异常除了程序运行时产生异常,一些特定的情况下,除了程序运行时产生

6、异常,一些特定的情况下,还能够使用还能够使用throw语句刻意地抛出异常。语句刻意地抛出异常。被被catch语句捕获的异常对象还可以重新抛出。语句捕获的异常对象还可以重新抛出。重新抛出的异常不会再被同一个重新抛出的异常不会再被同一个catch语句再语句再次捕获,而是为了允许其他的次捕获,而是为了允许其他的catch语句来捕语句来捕获,从而达到新的处理目的。获,从而达到新的处理目的。13示例示例-抛出异常抛出异常/抛出异常抛出异常Public void SomeMethod(int i) if(i100) thow new ArgumentOutOfRangException(); else C

7、onsole.WriteLine(“传递的函数符合要求传递的函数符合要求”); 14示例示例-抛出异常抛出异常在在main()方法中执行下面的代码,会抛出异常方法中执行下面的代码,会抛出异常 try Class1 cls1=new Class1(); cls1.SomeMethod(200);/参数越界参数越界 catch(ArgumentOutOfRangException e) Console.WriteLine(e.Message); 1516示例示例-建立自定义异常建立自定义异常using System;public class EmailCheckException:Applicat

8、ionExceptionpublic string _mes;/重写构造函数重写构造函数public EmailCheckException():base() _mes = null;public EmailCheckException(string message):base() _mes = message.ToString();public EmailCheckException(string message, Exception myNew):base(message,myNew)_mes = message.ToString();/Message属性的重载属性的重载public ov

9、erride string Message get return 格式错误格式错误;17示例示例-throw自定义异常自定义异常private bool InfoSave (string name, string email)string subStrings = email.Split();/如果输入的如果输入的Email不是被不是被“”字符分割成两段,则抛出字符分割成两段,则抛出Email错误异常错误异常if(subStrings.Length != 2) throw new EmailCheckException();elseint index = subStrings1.IndexOf

10、(.);/查找被查找被“”字符分成的两段的后一段中字符分成的两段的后一段中“.”字符的位置,没有字符的位置,没有“.” /或者或者“.”字符是第一个字符,则抛出字符是第一个字符,则抛出EmailErrorException异异常常if(index = 0)throw new EmailCheckException();/如果如果“.”字符是最后一个字符,抛出字符是最后一个字符,抛出EmailErrorException异异常常if(subStrings1subStrings1.Length -1 = .)throw new EmailCheckException();return true;1

11、8示例示例-Catch自定义异常自定义异常private void Submit_Click(object sender, System.EventArgs e)if(textName.Text.Length = 0 & textEmail.Text.Length = 0)MessageBox.Show(请填写正确的信息!请填写正确的信息!, 填写提示填写提示, MessageBoxButtons.OK, MessageBoxIcon.Information);return;tryInfoSave (textName.Text, textEmail.Text);catch(EmailC

12、heckException err)MessageBox.Show(err.Message, 邮件格式错误邮件格式错误, System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information);return;MessageBox.Show(“发送成功。发送成功。, 成功成功, MessageBoxButtons.OK, MessageBoxIcon.Information);19思考练习思考练习简要说明结构化异常处理的优点。简要说明结构化异常处理的优点。常用到异常类常用到异常类Exception的哪些重要属性。的哪些重要属性。在在trycatch结构中,结构中,catch分支表达式有哪分支表达式有哪些形式?些形式?位于异常结构层次顶端的是什么?位于异常结构层次顶端的是什么?如何抛出一个异常?抛出的异常

温馨提示

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

评论

0/150

提交评论