Обработка исключений JavaScript - отображение номера строки - PullRequest
25 голосов
/ 14 декабря 2009

При отлове / обработке исключений в 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.
}

Ответы [ 3 ]

16 голосов
/ 14 декабря 2009

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

Если вы хотите отладить одну функцию, в частности, Firebug имеет хорошую функцию трассировки стека (vis console.trace ()).

14 голосов
/ 14 декабря 2009

Посмотрите на это .

Способ анализа доступной информации:

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; 
}
1 голос
/ 14 декабря 2009

Я обнаружил, что в JavaScript, работающем под IE, невозможно перехватить трассировку стека в момент обнаружения исключения. Согласно этому PDF единственный способ получить трассировку стека в IE - это если вы не обработаете исключение.

...