程序的生成 调试和异常处理 C#-3.0面向对象编程六-错误和调试教学PPT课件.ppt

程序的生成 调试和异常处理 C#-3.0面向对象编程六-错误和调试教学PPT课件.ppt

异常基类 常用异常类列表: 异常基类 (续) 在该层次结构中有两个重要的类,它们均派生于System.Exception: ?System.SystemException—— 通常由.NET运行库引发 ??System.ApplicationException——这个类非常重要,因为它是第三方定义的异常类。 异常基类(续) 其他可能用到的异常类包括: StackOverflowException——如果分配给堆栈的内存区域已满,就会引发这个异常。 EndOfStreamException——这个异常通常是因为要读到文件末尾而引发的。 OverflowException——如果要在checked环境下把包含值–40的int类型数据转换为uint数据,就会引发这个异常。 使用异常 C#代码中处理可能的错误情况,一般要把程序的相关部分分成3种不同类型的代码块: try块包含的代码组成了程序的正常操作部分,但可能遇到某些严重的错误情况。 catch块包含的代码处理各种错误情况,这些错误是try块中的代码执行时遇到的。 finally块包含的代码清理资源或执行要在try块或catch块末尾执行的其他操作 。 try-catch try-finally try-catch-finally throw 使用异常 (续) catch 子句使用时可以不带任何参数,这种情况下它捕获任何类型的异常,并被称为一般 catch 子句。 catch (InvalidCastException e) { } try-catch try-catch 语句由一个 try 块后跟一个或多个 catch 子句构成 。 在 catch 块中可以使用 throw 语句再次引发已由 catch 语句捕获的异常。 catch (InvalidCastException e) { throw (e); //重新抛出异常 } try-catch (续) try-catch 语句由一个 try 块后跟一个或多个 catch 子句构成 。 try-finally finally 块用于清除 try 块中分配的任何资源以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块,与 try 块的退出方式无关 。 catch 用于处理语句块中出现的异常,而 finally 用于保证代码语句块的执行,与前面的 try 块的退出方式无关。 try-catch-finally catch 和 finally 一起使用的常见方式:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。 throw throw 语句用于发出在程序执行期间出现反常情况(异常)的信号。引发的异常是一个对象,该对象的类是从 System.Exception 派生的 。 通常 throw 语句与 try-catch 或 try-finally 语句一起使用。当引发异常时,程序查找处理此异常的 catch 语句。也可以用 throw 语句重新引发已捕获的异常。 System.Exception的常用属性 System.Exception的常用属性 属??? 性 说??? 明 HelpLink 链接到一个帮助文件上,以提供该异常的更多信息 Message 描述错误情况的文本 Source 导致异常的应用程序或对象名 StackTrace 堆栈上方法调用的信息,它有助于跟踪引发异常的方法 TargetSite 引发异常的方法的.NET反射对象 InnerException 如果异常是在catch块中引发的,它就会包含把代码发送到catch块中的异常对象 默认异常处理 NET运行库会捕获异常。 NET运行库可以把整个程序放在另一个更大的try块中,每个.NET程序都会这么做。这个try块有一个 catch处理程序,它可以捕获任何类型的异常。 嵌套的 try块 在try嵌套的时候,其处理过程有一条准则: 从内到外,如果没有合适的异常处理来接收异常,那么就由.NET来处理这个异常。 用户定义的异常类 假设你正在实现一个方法叫做monthName,这个方法接受一个简单的int类型的参数,并且返回一个对应的月份。比如,monthName(1)返回“January”。问题是:当参数小于1或者参数大于12的时候,方法应该返回什么呢? 学习了异常之后,我们可以想到一个很好的办法,即方法不返回任何东西,而仅仅引发一个异常。虽然.NET Framework类库包含了大量的定义好的异常处理类。但是,现实中会遇到各种各样系统未定义过的错误。此时,就需要我们自己定义一个异常处理类,并在出现这种异

文档评论(0)

1亿VIP精品文档

相关文档