$ locile在“locals”中定义

时间:2011-09-01 10:18:46

标签: c# asp.net exception-handling

ħ 我们有常用的日志实用程序函数,我希望通过添加对Server.GetLastError()的调用来调整它,如果还有错误也要记录。 日志功能是单独项目的一部分,所以我尝试使用HttpContext.Current.Server.GetLastError()(就像我对Request,ServerVariables和Session属性所做的那样)。 在测试期间,我创建了一个简单的异常:

 int i=0, j=0;
try
{
    int k = i / j;
}
catch (Exception E)
{
    Tools.CooLog("in");
}
Tools.CooLog("out");

为了找出“HttpContext.Current.Server.GetLastError()”是否会在调用Tools.CooLog("out");时返回异常。

相反,我有两个很大的惊喜 1.在两个调用HttpContext.Current.Server.GetLastError()中返回null。 2.也许最奇怪的是,在本地部分第一次调用CooLog期间,我看到了一些年轻,英俊和PHP版本 - 我看到有一个名为$ exception的值,令人惊讶的是{{1}无法检索!

$exception is defined and HttpContext.Current.Server.GetLastError() fails

所以我的问题是 1.为什么HttpContext.Current.Server.GetLastError()返回null? (HttpContext.Current.Server.GetLastError()工作正常) 2.那个$例外来自哪里?有没有办法使用它? (在第二次调用CooLog时,变量未定义)

2 个答案:

答案 0 :(得分:6)

这是一个特殊的调试器变量。您无法通过代码访问它。

你在Watch窗口中没有看到它的原因是异常是:

  • 已处理

  • 还没有触发Application.Error事件。

答案 1 :(得分:3)

$exception只是调试器暂停执行程序的原因。这与您在catch块中可以访问的异常相同,例如E