类 Exception 是异常继承的基类。 例如, InvalidCastException 类层次结构如下所示:
Object
Exception
SystemException
InvalidCastException
该 Exception 类具有以下属性,可帮助更轻松地理解异常。
属性名称 | DESCRIPTION |
---|---|
Data | IDictionary 包含键/值对中的任意数据。 |
HelpLink | 可以保存 URL(或 URN)到帮助文件,该文件提供有关异常原因的详细信息。 |
InnerException | 此属性可用于在异常处理期间创建和保留一系列异常。 可将其用于创建新异常,其中包含之前捕获到的异常。 原始异常可由属性中的 InnerException 第二个异常捕获,允许处理第二个异常的代码检查其他信息。 例如,假设你有一个接收格式不正确的参数的方法。 代码尝试读取参数,但引发异常。 该方法会捕获异常然后抛出FormatException。 为了提高调用方确定异常原因的能力,有时需要方法捕获由辅助例程抛出的异常,然后抛出更能准确指示已发生错误的异常。 可以创建一个新的更有意义的异常,其中内部异常引用可以设置为原始异常。 然后可向调用方引发此更有意义的异常。 请注意,使用此功能,可以创建一系列链接异常,该异常以首次引发的异常结尾。 |
Message | 提供有关异常原因的详细信息。 |
Source | 获取或设置导致错误的应用程序或对象的名称。 |
StackTrace | 包含可用于确定错误发生位置的堆栈跟踪。 堆栈跟踪包括源文件名称和程序行号(如果调试信息可用)。 |
从 Exception 继承的大多数类不实现其他成员或提供附加功能;它们只是继承自 Exception。 因此,异常的层次结构、异常名称和异常中包含的信息中可以找到异常的最重要信息。
建议只引发和捕获派生自 Exception的对象,但可以引发从 Object 类派生的任何对象作为异常。 请注意,并非所有语言都支持抛出和捕获不派生自Exception的对象。