$ исключение определено в "locals" - PullRequest
7 голосов
/ 01 сентября 2011

H У нас есть служебная функция журнала, которую мы вызываем довольно часто, и я хотел оживить ее, добавив вызов к Server.GetLastError() и, если возникнет ошибка, также зарегистрировать.Функция log является частью отдельного проекта, поэтому я попытался использовать 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() вернул ноль.2. И, возможно, самым странным является то, что во время первого вызова CooLog в секции localals я увидел немного моей молодой, красивой и PHP-версии - я увидел, что есть значение с именем $ exception, и удивительно, что у него есть исключение, что HttpContext.Current.Server.GetLastError()не удалось получить!

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

Итак, мои вопросы: 1. Почему HttpContext.Current.Server.GetLastError () возвращает ноль?(HttpContext.Current.Request.ServerVariables отлично работает) 2. Откуда взято исключение $?есть ли способ его использовать?(во втором вызове CooLog переменная не определена)

Ответы [ 2 ]

6 голосов
/ 01 сентября 2011

Это специальная переменная отладчика. Вы не можете получить к нему доступ через код.

Причина, по которой вы не видите его в окне Watch, заключается в том, что исключение было либо:

  • Обработано

или

  • Событие Application.Error еще не сработало.
3 голосов
/ 01 сентября 2011

$exception - это исключение, которое послужило причиной того, что отладчик приостановил выполнение вашей программы.Это то же самое, что и исключение, к которому вы можете получить доступ в блоке catch, в вашем случае E.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...