Есть ли способ получить номера строк или трассировки стека из объекта Error в Internet Explorer? - PullRequest
2 голосов
/ 08 февраля 2012

Чтобы упростить отладку некоторого хитрого асинхронного кода Javascript, который неправильно работает в Internet Explorer, я хочу знать, возможно ли, учитывая объект Error, получить полезную информацию о его первоначальном расположении.

Firefox, Chrome, Opera и я полагаю, что все остальные приятные браузеры позволяют мне это делать:

try{
    throw Error('My custom error message');
}catch(e){
    console.log(e.stack)
}

, но ни одно из свойств, которые я пробовал (error.stack и error.lineNumber), не работаетв Internet Explorer. Есть ли способ получить эту информацию в Internet Explorer, используя только Javascript? Поскольку IE REPL покажет исходный номер строки для необработанных исключений, даже если они были перехвачены и переброшены в другой строке, я предполагаюинформация, которую я хочу, хранится где-то , но я не смог выяснить, есть ли публичный способ ее получить.

1 Ответ

2 голосов
/ 08 февраля 2012

Эти свойства недоступны в IE. Вы можете получить некоторые из них, используя график arguments.callee. Однако этот метод работает не слишком хорошо, если у вас много анонимных функций или вы часто используете bind().

См. goog.debug.getStacktrace() в отладочном пакете библиотеки Closure для примера реализации. goog.debug.normalizeErrorObject() также может быть полезно для вас.

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