第2章C#语言基础-4_第1页
第2章C#语言基础-4_第2页
第2章C#语言基础-4_第3页
第2章C#语言基础-4_第4页
第2章C#语言基础-4_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、C#程序设计程序设计第第2 2章章 C# C#语言基础语言基础2z了解什么是异常,以及了解什么是异常,以及C#的异常处理机制的异常处理机制z了解了解C#C#常用的异常类常用的异常类z掌握掌握trytry、catchcatch和和finallyfinally关键字处理异常关键字处理异常z掌握掌握throwthrow关键字抛出异常关键字抛出异常z了解自定义异常了解自定义异常3什么是异常异常处理的方法抛出异常自定义异常为什么要异常处理为什么要异常处理4 int a, b; Console.Write(请输入被除数:请输入被除数:); a = int.Parse(Console.ReadLine ()

2、; Console.Write(请输入除数:请输入除数:); b = int.Parse(Console.ReadLine(); int c; c = a / b; Console.WriteLine(0/1=2,a,b,c);处理处理C#中的异常中的异常l异常异常:程序在执行过程中发生的错误。:程序在执行过程中发生的错误。l常见的异常常见的异常文件找不到文件找不到文件操作权限不足文件操作权限不足网络无法连接网络无法连接数组越界数组越界算术除算术除05在在C#C#中,当出现某种异常时,就会创建一个异常对象中,当出现某种异常时,就会创建一个异常对象ArgumentException 参数错误:方

3、法的参数无效参数错误:方法的参数无效ArgumentNullException 参数为空:给方法传递一个不可接受的空参参数为空:给方法传递一个不可接受的空参数数ArithmeticException 数学计算错误:由于数学运算导致的异常,数学计算错误:由于数学运算导致的异常,覆盖面广覆盖面广DivideByZeroException被被0除除FormatException参数的格式不正确参数的格式不正确IndexOutOfRangeException索引超出范围,小于索引超出范围,小于0或比最后一个元素索引或比最后一个元素索引大大NullReferenceException引用为引用为null

4、的对象的对象StackOverflowException堆栈已满堆栈已满OverflowException溢出溢出OutOfMemoryException无法为新语句分配内存时引发异常,内存不无法为新语句分配内存时引发异常,内存不足足InvalidCastException非法强制转换,显示转换失败时引发非法强制转换,显示转换失败时引发EndOfStreamException读到文件末尾而引发的。读到文件末尾而引发的。67什么是异常异常处理的方法抛出异常自定义异常异常处理异常处理l异常处理异常处理:在运行时跟踪这些异常,并编写代码控制结果:在运行时跟踪这些异常,并编写代码控制结果被称为被称为“

5、异常处理异常处理”。l异常处理的形式异常处理的形式8形式一:单形式一:单catch分支分支try /待监测代码,此段代码若出现异常,待监测代码,此段代码若出现异常, /则程序流程转到则程序流程转到catch分支分支catch(Exception e) /异常处理代码异常处理代码形式二:多形式二:多catch分支分支try /待监测代码,此段代码若出现异常,待监测代码,此段代码若出现异常, /则程序流程转到则程序流程转到catch分支分支catch(ExceptionType1 e) /异常处理代码异常处理代码catch(ExceptionType2 e) /异常处理代码异常处理代码形式三:单形

6、式三:单catch配配finallytry /待监测代码,此段代码若出现异常,待监测代码,此段代码若出现异常, /则程序流程转到则程序流程转到catch分支分支catch(Exception e) /异常处理代码异常处理代码finally /善后处理代码,无论是否出异常都会执善后处理代码,无论是否出异常都会执行,即使行,即使catch块有块有return也是如此也是如此形式四:多形式四:多catch配配finallytry /待监测代码,此段代码若出现异常,待监测代码,此段代码若出现异常, /则程序流程转到则程序流程转到catch分支分支catch(ExceptionTyp1 e) /异常处理

7、代码异常处理代码catch(ExceptionTyp2 e) /异常处理代码异常处理代码finally /善后处理代码,无论是否出异常都会执善后处理代码,无论是否出异常都会执行,即使行,即使catch块有块有return也是如此也是如此形式五:无形式五:无catchtry /待监测代码,此段代码若出现异常,待监测代码,此段代码若出现异常, /则程序流程转到则程序流程转到外层外层catch分支分支finally /善后处理代码,无论是否出异常都会执善后处理代码,无论是否出异常都会执行,即使行,即使catch块有块有return也是如此也是如此9try块包含的代码组成了程序的正常操作部分,但可能遇

8、到块包含的代码组成了程序的正常操作部分,但可能遇到某些严重的错误情况。某些严重的错误情况。 catch块包含的代码处理各种错误情况,这些错误是块包含的代码处理各种错误情况,这些错误是try块中块中的代码执行时遇到的。的代码执行时遇到的。 finally块包含的代码清理资源或执行要在块包含的代码清理资源或执行要在try块或块或catch块末尾块末尾执行的其他操作执行的其他操作 。控制总是传递给。控制总是传递给 finally 块,与块,与 try 块的退块的退出方式无关出方式无关 。引出引出e.message与与e.tostring()trytry只有只有1 1个;个;finally final

9、ly 只有只有1 1个或个或0 0个个catch catch 可以有可以有0 0个个( (必须有一个必须有一个finally),finally),可以有多个可以有多个异常处理异常处理 10异常处理异常处理 在在catch多分支中需要注意各异常类型的顺序:多分支中需要注意各异常类型的顺序:先具体化异常,再一般性异常先具体化异常,再一般性异常。catch块中有块中有application.exit()或或enviroment.exit(0)语句时,语句时,finally块不会执行块不会执行catch块后没有参数时可以处理所有异常,包括块后没有参数时可以处理所有异常,包括exception及其它语言

10、发生的异常。及其它语言发生的异常。引出引出e.message与与e.tostring()11什么是异常异常处理的方法抛出异常自定义异常异常的抛出异常的抛出l抛出异常抛出异常:用来通知有错误出现了。:用来通知有错误出现了。lthrow 语句用于发出在程序执行期间出现反常情况(异常)的语句用于发出在程序执行期间出现反常情况(异常)的信 号 。 引 发 的 异 常 是 一 个信 号 。 引 发 的 异 常 是 一 个 对 象对 象 , 该 对 象 的 类 是 从, 该 对 象 的 类 是 从 System.Exception 派生的。派生的。l通常通常 throw 语句与语句与 try-catch

11、或或 try-finally 语句一起使用。当引语句一起使用。当引发异常时,程序查找处理此异常的发异常时,程序查找处理此异常的 catch 语句。也可以用语句。也可以用 throw 语句重新引发已捕获的异常。语句重新引发已捕获的异常。 12 catch (FormatException e) Console.WriteLine(e.Message);throw e; /或或throw ;/必须和必须和catch块一起用,抛出当前异常块一起用,抛出当前异常throw new Exception (“必须是数值字符串!必须是数值字符串!); 13什么是异常异常处理的方法抛出异常自定义异常自定义异常

12、自定义异常l定义一个定义一个异常处理类异常处理类,并在出现这种异常的时候使,并在出现这种异常的时候使用用throw关键字引发此异常。关键字引发此异常。 l自定义异常可以解决与业务相关的意外情况自定义异常可以解决与业务相关的意外情况l一般继承自一般继承自ApplicationException,也可以继承自,也可以继承自 Exception14 class MyException : Exception /两个构造函数两个构造函数 public MyException(): base() public MyException(string sMsg): base(sMsg) /重写重写message属性属性 public override string Message get return 对不起出错了对不起出错了+base.Message; if (c 2) throw new MyException(这是故意引发的异常这是故意引发的异常); 15 在在try嵌套的时候,其处理过程有一条准则嵌套的时候,其处理过程有一条准则: 从内到外,如果没有合适的异常处理来接收异从内到外,如果没有合适的异常处理来接收异常,那么就由常,那么就由.NET来处理这个异常。来处

温馨提示

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

评论

0/150

提交评论