Ведение журнала try {...} catch (e) {...} с использованием ajax: возможно? - PullRequest
2 голосов
/ 15 сентября 2011

Когда я пытаюсь выполнить следующее в консоли Chrome, в качестве значения 'e' я получаю значение undefined:

try{
    var test=somethingInvalid();
}
catch(e){
    console.log(e);
}

Как получить доступ к деталям e?

Какими свойствами он обладает?

Спасибо.


Doh. Выполнение console.log ('E is:' + e) ​​швов для работы. Извините!

Ответы [ 5 ]

2 голосов
/ 15 сентября 2011

Ну, он вернет undefined, потому что последняя строка console.log не возвращает значение.

try{
    false = true;
}
catch(e){
    console.log(e);
}

, но с указанным выше вы также увидите объект > Reference Error, за которым следует следующая строка undefined

enter image description here

0 голосов
/ 27 июля 2013

У меня есть пользовательская функция assert(), которая извлекает трассировку стека функций (во всех современных браузерах, кроме IE):

if (!condition) {
    try {
        throw Error();
    } catch (e) {
        // Browsers Firefox, Chrome, Opera provide additional stack property;
        // Check if it does not exist (IE);
        stackTrace = (!e.stack) ? "No stack available" : e.stack;
        self.reportError(errorType, stackTrace, message);
    }
}

Очевидно, что происходит гораздо больше, чем то, что я показываю, но идея есть.

0 голосов
/ 16 сентября 2011

, хотя все предоставленные ответы были очень полезны, мы искали:

try{
    var test=somethingThatDoesntExist();
}
catch(e){
    console.log(e.message);
}

e.message - это переменная, которую мы хотим регистрировать, поскольку она (насколько нам известно)содержит строковое представление об обнаруженной ошибке.

спасибо!

0 голосов
/ 15 сентября 2011

Насколько я понимаю, Chrome выводит детали 'e'. Я просто сделал это:

var err;
try { /* what you did */ }
catch (e) { err = e; }

, на котором Chrome отображает детали 'e'.

В этом случае вы можете выполнить вызовы, чтобы увидеть следующее:

  • err.name
  • err.arguments
  • err.type
  • err.stack

Удачи!

0 голосов
/ 15 сентября 2011

Согласно MDN, это значение в операторе throw.

https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch

Идентификатор исключения

Когда в блоке try выдается исключение, exception_var (например, e в catch (e)) содержит значение, указанное в операторе throw. Вы можете использовать этот идентификатор, чтобы получить информацию об исключении это было брошено.

Этот идентификатор является локальным для предложения catch. То есть он создан когда вводится предложение catch и после завершения предложения catch после выполнения, идентификатор больше не доступен.

...