C# 中的内置异常类
在这里您将学习 C# 中的内置异常类。
C# .NET 包含用于各种可能错误的内置异常类。Exception 类是所有异常类的基类。
以下是 .NET 中异常类的层次结构

上图中,Exception
类是 SystemException
和 ApplicationException
类的基类。SystemException
类是 .NET Framework 中所有内置异常类的基类。
ApplicationException
曾被推荐作为所有自定义异常类的基类(当无法使用系统异常类且您需要新的异常类来处理业务规则冲突或其他应用程序相关错误时,应创建自定义异常类)。它旨在区分应用程序定义的异常与系统定义的异常。然而,Microsoft 现在建议自定义异常类从 Exception
类而不是 ApplicationException
类派生。
下图显示了在运行时访问 null 对象属性时,在 Visual Studio 调试模式下如何抛出 NullReferenceException
。

内置异常类
下表列出了 .NET 中重要的内置异常类。
异常类 | 描述 |
---|---|
ArgumentException | 当传递给方法的非 null 参数无效时引发。 |
ArgumentNullException | 当 null 参数传递给方法时引发。 |
ArgumentOutOfRangeException | 当参数的值超出有效值范围时引发。 |
DivideByZeroException | 当整数值除以零时引发。 |
FileNotFoundException | 当物理文件在指定位置不存在时引发。 |
FormatException | 当值不处于适当的格式,无法通过转换方法(如 Parse)从字符串转换时引发。 |
IndexOutOfRangeException | 当数组索引超出数组或集合的下限或上限时引发。 |
InvalidOperationException | 当方法调用在对象的当前状态下无效时引发。 |
KeyNotFoundException | 当访问集合中成员的指定键不存在时引发。 |
NotSupportedException | 当方法或操作不受支持时引发。 |
NullReferenceException | 当程序访问 null 对象的成员时引发。 |
OverflowException | 当算术、类型转换或转换操作导致溢出时引发。 |
OutOfMemoryException | 当程序没有足够的内存来执行代码时引发。 |
StackOverflowException | 当内存中的堆栈溢出时引发。 |
TimeoutException | 分配给操作的时间间隔已过期。 |
当发生错误时,应用程序代码或默认处理程序会处理异常。在下一节中学习如何处理异常。