当前位置:嗨网首页>书籍在线阅读

05-异常类

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.2.2 异常类

异常通常是由应用程序(用户程序等)或运行库(公共语言运行库和应用程序运行库)引发的。.NET提供了大量与异常有关的类,用来处理异常,每一个异常类都表示一种异常。Exception类是所有异常的基类,当发生异常时,系统或当前正在执行的应用程序会通过引发包含关于该错误的信息的异常来报告异常。异常发生后,将由该应用程序或默认异常处理程序进行处理。

异常类继承关系的结构如下图所示。

有些异常在基本操作失败时由 .NET Framework 的公共语言运行库(CLR)自动引发,如“零做除数时”就会引发 DivideByZeroException异常。下表列出了常用的异常。

| Exception 类 | 描述 | | :----- | :----- | :----- | :----- | | SystemException | 其他用户可处理的异常的基本类 | | ArgumentException | 方法的参数是非法的 | | ArgumentNullException | 一个空参数传递给方法,该方法不能接受该参数 | | ArgumentOutOfRangeException | 参数值超出范围 | | ArithmeticException | 出现算术上溢或者下溢 | | DivideByZeroException | 除零异常 | | FormatException | 参数格式错误 | | IndexOutOfRangeException | 数组索引超出范围 | | NullReferenceException | 试图使用一个未分配的引用 | | OutOfMemoryException | 内存空间不够 | | StackOverflowException | 堆栈溢出 |

对于.NET类来说,一般的异常类System.Exception派生于System.Object,通常不在代码中抛出这个System.Exception对象,因为它无法确定错误的具体情况。通常用的异常类都从Exception类继承。其中有以下两种主要类型的异常类,它们构成了几乎所有的应用程序和运行库异常的基础。

(1)ApplicationException:用户定义的应用程序异常类型的基类。ApplicationException继承Exception,但是不提供扩展功能,必须开发ApplicationException的派生类,以实现自定义异常的功能。

(2)SystemException:系统异常类。CLR抛出的异常称为系统异常。这些异常通常被看作是不可恢复的、致命的错误。系统异常直接从名为System.SystemException的基类中派生,该基类又从System.Exception中派生。

System.Exception中有许多属性和方法,常用的如下表所示。

| 属性 | 说明 | | :----- | :----- | :----- | :----- | | Data | 这个属性可以给异常添加键/值语句,以提供异常的额外信息 | | HelpLink | 链接到一个帮助文件上,以提供该异常的更多信息 | | InnerException | 对内部异常的引用,如果是嵌套异常处理,该属性表示前一个异常 | | Message | 描述错误原因的文本 | | Source | 导致异常的应用程序集或对象的名称 | | StackTrace | 给出堆栈上方法调用的详细信息,有助于跟踪抛出异常的方法 |