InnerException 与 全局错误处理程序

属性值

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

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

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

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

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

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

 

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

例如:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
protected void Application_Error(Object sender, EventArgs e)
{
    Session[
"CurrentError"= "Global: " + 
        Server.GetLastError().Message;
    Server.Transfer(
"lasterr.aspx");
}

 

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

 

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

转载于:https://www.cnblogs.com/BlueskyGreenearth/archive/2009/03/27/1423433.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值