Подтвердить что ты не робот

Захват всех необработанных исключений javascript

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

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

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

http://eriwen.com/javascript/js-stack-trace/

Также что-то похожее на предыдущую ссылку:

https://github.com/eriwen/javascript-stacktrace

Вот базовый код второй ссылки выше, который печатает трассировку стека указанной функции javascript:

instrumentFunction: function (context, functionName, callback) {
    context = context || window;
    var original = context[functionName];
    context[functionName] = function instrumented() {
        callback.call(this, printStackTrace().slice(4));
        return context[functionName]._instrumented.apply(this, arguments);
    };
    context[functionName]._instrumented = original;
}

function printStackTrace(options) {
    options = options || {
        guess: true
    };
    var ex = options.e || null,
        guess = !! options.guess;
    var p = new printStackTrace.implementation(),
        result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

Итак, чтобы подвести итог, знаете ли вы, что у вас есть какой-то "слушатель" для прослушивания всех необработанных исключений javascript, а затем распечатать их на экране в окне предупреждения?

Спасибо! Джейсон

4b9b3361

Ответ 1

Вы можете сделать это, используя метод window.onerror.

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
    alert("Error occured: " + errorMsg);//or any message
    return false;
}

Ответ 2

Вы можете использовать window.onerror или (удивительно!) привязку к событию "ошибка":

window.onerror = function (message, file, line, col, error) {
   alert("Error occured: " + error.message);
   return false;
};
window.addEventListener("error", function (e) {
   alert("Error occured: " + e.error.message);
   return false;
})

Если вы хотите отслеживать ошибки JavaScript, вы можете попробовать Atatus. Я работаю в Atatus.

Ответ 3

Отъезд http://log4javascript.org основан на Log4J. Если большая часть вашего кода включена в инструкции try/catch для обработки исключений, вы можете использовать эту библиотеку в качестве общего интерфейса для отправки вывода в всегда доступное "диалоговое окно" или окно регистрации, которое мог видеть ваш конечный пользователь. У вас может даже быть кнопка, которая выполняет window.print(), чтобы распечатать содержимое диалогового окна на принтере или в формате PDF. Удачи.