2009-12-14 6 views
24

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

ответ

16

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

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

+0

Конечно, FireBug! – Upperstage

+1

Этот блог довольно старый (2008). Там должен быть лучший способ. – RayLoveless

+0

запись в блоге мертва ... –

11

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

Способ анализа имеющейся информации:

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; 
} 
+0

Просто примечание - если вы используете серверный сервер, это работает очень хорошо. Upvoted - Спасибо за публикацию! – j03m

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^