Есть ли способ обойти исключение и сохранить трассировку стека в Javascript? - PullRequest
7 голосов
/ 25 января 2012

Я знаю, что в Chrome есть известная ошибка , не сохраняющая трассировку стека при повторной выдаче исключения в Javascript.

У меня в Chrome работает следующий код:

try {
    try {
      runCodeThatMayThrowAnException();
    } catch (e) {
        // I'm handing the exception here (displaying a nice message or whatever)
        // Now I want to rethrow the exception
        throw (e);
    }
} catch (e) {
    // The stacktrace was lost here :(
}

Есть ли способ сохранить трассировку стека? Может быть плагин jQuery? Любой обходной путь или идеи?

1 Ответ

5 голосов
/ 26 января 2012

В последнем блоке catch попробуйте

    throw e.stack;

И я имею в виду самый последний (тот, который идет в браузер). Если вы вложите свою попытку / поймать глубже, вам придется изменить свои предыдущие броски.

    function throwError() {
        var test = _undefined.propertyAccess;
    }
    try {
        try {
            try {
                throwError();
            } catch (e) {
                alert("exception: " + e.stack);
                throw e;
            }
        } catch (e) {
            console.log(e.stack);
            throw e;
        }
    } catch (e) {
        throw e.stack;
    }

Какая странная ошибка.

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