Я пытаюсь найти или выяснить способ отображения в окне предупреждения всех необработанных исключений javascript в приложении. Я бы хотел, чтобы все это выполнялось на стороне клиента, без использования кода на стороне сервера. Я использую MVC3 в качестве среды.
Я исследовал последние несколько дней и не нашел именно то, что ищу.
Я нашел 2 способа ниже, которые кажутся почти тем, что я ищу, за исключением того, что эти способы настроены так, что вам нужно передать имя функции в пользовательский метод для печати трассировки стека всех необработанных исключений в этом одном специфическая функция. Я ищу способ избавиться от необходимости вручную передавать имя функции пользовательскому методу, который печатает трассировку стека для всех необработанных исключений. Я бы хотел, чтобы этот специальный метод просто «прослушивал» все необработанные исключения во всем приложении.
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 и затем выводить их на экран в окне предупреждения?
Спасибо! Джейсон
источник
Ответы:
Вы можете сделать это с помощью метода window.onerror.
источник
Вы можете использовать
window.onerror
или (что удивительно!) Правильно привязать к событию error:Если вы хотите отслеживать ошибки JavaScript, вы можете попробовать Atatus . Я работаю в Ататусе.
источник
В дополнении к
Вы также можете поймать все ошибки, возникшие внутри обещания callback (
.then()
), прослушивающегоunhandledrejection
событиеисточник
window.onerror
иwindow.addEventListener("error"
, или достаточно одного из них?window.addEventListener("error"
, senduseCapture
set totrue
позволяет также отлавливать ошибки элементов, которые не всплывали. developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…error
Событие не ловил мою конкретную ошибку.unhandledrejection
получил хотя.throw new Error('tja');
не попадает в последний хром с таким подходом ...Посетите http://log4javascript.org, он основан на Log4J. Если большая часть вашего кода заключена в операторы try / catch для обработки исключений, вы можете использовать эту библиотеку в качестве общего интерфейса для отправки вывода в всегда доступное «диалоговое окно» или окно регистрации, которое может видеть ваш конечный пользователь. У вас даже может быть кнопка, которая выполняет window.print () для печати содержимого диалогового окна на принтере или в PDF. Удачи.
источник