Обработка исключений JavaScript - отображение номера строки
При перехвате/обработке исключений в JavaScript, как я могу определить, что такое стек вызовов, когда произошло исключение? (а также, если возможно, номер строки)
try
{
// etc...
}
catch (ex)
{
// At this point here I want to be able to print out a detailed exception
// message, complete with call stack, and if possible line numbers.
}
Ответы
Ответ 1
Каждый браузер обрабатывает это по-другому, поэтому нет универсального способа сделать это. В этом сообщении в блоге есть хороший код для вывода трассировки стека для большинства поддерживаемых браузеров. Я не думаю, что есть хороший способ предоставить номер строки.
Если вы хотите отлаживать одну функцию, в частности, Firebug имеет хорошую функцию отслеживания стека (vis console.trace()).
Ответ 2
Посмотрите этот.
Способ анализа доступной информации:
try
{
doInit();
} catch(err)
{
var vDebug = "";
for (var prop in err)
{
vDebug += "property: "+ prop+ " value: ["+ err[prop]+ "]\n";
}
vDebug += "toString(): " + " value: [" + err.toString() + "]";
status.rawValue = vDebug;
}
Ответ 3
Я обнаружил, что в JavaScript, запущенном под IE, невозможно зафиксировать трассировку стека в точке, где исключено исключение. Согласно this PDF единственный способ получить трассировку стека в IE - это если вы не обрабатываете исключение.