InnerException 与 全局错误处理程序

属性值

一个 Exception 实例,它描述导致当前异常的错误。InnerException 属性返回与传递给构造函数的值相同的值,或者,如果没有向构造函数提供内部异常值,则返回 null 引用(Visual Basic 中为 Nothing)。此属性为只读。

当异常 X 作为以前的异常 Y 的直接结果发生时,XInnerException 属性应当包含对 Y 的引用。

使用 InnerException 属性获得导致当前异常的异常集。

您可以创建对以前的异常进行捕捉的新异常。处理第二个异常的代码可利用前一个异常的其他信息更适当地处理错误。

假定有一个可以读取文件并格式化该文件中数据的函数。在此示例中,当代码试图读取文件时引发 IOException。该函数捕捉 IOException 并引发 FileNotFoundExceptionIOException 可以保存在 FileNotFoundExceptionInnerException 属性中,从而使捕捉 FileNotFoundException 的代码可以检查导致初始错误的原因。

保存对内部异常引用的 InnerException 属性在初始化异常对象时设置。

 

若要创建应用程序范围的错误处理程序,请在 Global.asax 文件中将代码添加到 HttpApplication_Error 事件。

例如:

 

Code

 

如果是未处理的异常,也就是说发生异常时没有在try-catch块中,以上代码将会显示:“发生未处理的HttpUnhandledException”之类,于是应该改成Server.GetLastError().InnerException.Message

 

另外,Server.Transfer() 不会导致浏览器地址栏URL改变,而Response.Redirect()将会导致改变

posted on 2009-03-27 19:09  天蓝  阅读(2782)  评论(0编辑  收藏  举报