обработка ошибок с VS2008 - PullRequest
       23

обработка ошибок с VS2008

0 голосов
/ 01 марта 2009
function testFun() {
    onerror = function() { log("caught the error"); return true; };
    setTimeout(function() { throw "bad bad bad"; }, 300);
};

Это пример кода, но он демонстрирует проблему. Если я запускаю это в FF или IE7, он выводит разумное сообщение «поймал ошибку» (допустим разумную функцию «log»).

Однако, если я отлаживаю код в VS2008, отладчик останавливается на выходе с сообщением: «Ошибка времени выполнения Microsoft JScript: исключение сгенерировано и не перехвачено». Если я говорю «продолжить» или «игнорировать», сообщение журнала не создается.

Это проблема, поскольку реальный код, с которым я работаю, намного больше этого, и я иногда захочу, вы знаете, что-то отлаживать. Итак, два вопроса:

  1. Кто-нибудь знает, почему и можно ли изменить это поведение с помощью флага, о котором я не знаю?
  2. Я делаю то, что, как мне кажется, я делаю (устанавливая глобальный обработчик 'onerror') в этом коде? Если нет, то каков подходящий шаблон для обнаружения ошибок такого типа?

Примечание: нет разницы в этой проблеме, если я использую window.onerror.

1 Ответ

2 голосов
/ 01 марта 2009

Согласно эта , определяющая глобальную onerror функцию, не работает в IE. Возможно, они говорили об IE6 или более ранних версиях, поэтому, возможно, MS исправила это для IE7 - однако я не ожидал, что это просто автоматически перейдет к отладчику VS.

В любом случае, попробуйте использовать window.onerror = function вместо onerror.

Если это не сработает, вам придется использовать блок try/catch внутри функции таймера.

PS: Получить Firefox и использовать Firebug. отладчик (и все остальное) намного лучше и приятнее в использовании, чем отладка VS

...