Framework 2.0 中的一个新属性
HelpLink 链接到一个帮助文件上,以提供该异常的更多信息
InnerException 如果此异常是在 catch 块中抛出的,它就会包含把代码发送到 catch 块中的异常
对象
Message 描述错误情况的文本
Source 导致异常的应用程序或对象名
StackTrace 堆栈上方法调用的信息,它有助于跟踪抛出异常的方法
TargetSite 描述抛出异常的方法的.NET 反射对象
在这些属性中,如果可以进行堆栈跟踪,StackTrace 和 TargetSite 是由.NET 运行库自
动提供的。Source 总是由.NET 运行库提供为产生异常的程序集名称(但可以在代码中修改
该属性,提供更专门的信息),Data、Message、HelpLink 和 InnerException 必须由抛出异常
的代码提供,其方法是在抛出异常前设置这些属性。例如,抛出异常的代码如下所示:
if (ErrorCondition == true)
{
Exception myException = new ClassmyException("Help!!!!");
myException.Source = "My Application Name";
myException.HelpLink = "MyHelpFile.txt";
myException.Data["ErrorDate"] = DateTime.Now;
myException.Data.Add("AdditionalInfo", "Contact Bill from the Blue Team");
throw myException;
}
其中 ClassMyException 是抛出的异常类名。注意所有的异常类名通常以 Exception
结尾。Data 属性可以用两种方式设置。
4. 没有处理异常时所发生的情况
有时生成了一个异常后,代码中没有 catch 块能处理这类异常。前面的 SimpleExceptions
示例就说明了这种情况。例如,假定忽略 FormatException 和通用的 catch 块,只有处理
IndexOutOfRangeException 的块。此时,如果抛出一个 FormatException 异常,会发生什么情
况呢?
答案是.NET 运行库会捕获它。在本节的后面将介绍如何嵌套 try 块—— 实际上在本示
例中,就有一个在后台处理的嵌套 try 块。.NET 运行库把整个程序放在另一个更大的 try
块中,每个.NET 程序都会这么做。这个 try 块有一个 catch 处理程序,它可以捕获任何类
350
2022-03-21 21:58:12
7.54MB
c#本质论
1