Как уже упоминал @Badgy, вы можете установить обработчик ошибок Vue, чтобы перехватывать ошибки, возникающие в Vue. Это можно сделать следующим образом:
Vue.config.errorHandler = function (err, vm, info) {
// handle error
// `info` is a Vue-specific error info, e.g. which lifecycle hook
// the error was found in. Only available in 2.2.0+
}
Приведенный выше код может быть расположен где угодно в вашем javascript. Я нахожу код непосредственно перед тем, как создать свой экземпляр VUE. перед моим var app = new Vue({...});
кодом. Поскольку это глобальный обработчик ошибок vue, он будет обрабатывать ошибки всех экземпляров vue, а также компонентов vue. Я обнаружил, что на практике он в основном перехватывает ошибки, возникающие в методах визуализации vue.
Подробнее об этом вы можете прочитать в официальных документах здесь: https://vuejs.org/v2/api/#errorHandler
Для более общих (не связанных с vue) ошибок javascript вам по-прежнему нужен глобальный обработчик ошибок, например:
window.onerror = function (msg, url, line, col, error) {
//code to handle or report error goes here
}
Опять же, этот код может быть размещен везде, где разрешен javascript, но, как правило, вы захотите поместить его для раннего запуска в стеке javascript. Подробнее об этом вы можете прочитать здесь: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror
И, наконец, чтобы поймать «Отклонение обещания» (т. Е. Выброс исключения из функции Promise), нам нужно прослушивать события unhandledrejection
, поскольку отклонение Promise не перехватывается механизмом window.onerror
(благодаря @Blauhirn за подсказку). В некоторых браузерах (в настоящее время Chrome и Edge) отклонения Promise можно обнаружить с помощью следующего подхода:
window.addEventListener('unhandledrejection', function(event) {
//handle error here
//event.promise contains the promise object
//event.reason contains the reason for the rejection
});
Для получения дополнительной информации см. Этот вопрос StackOverflow: Поймайте все необработанные отклонения обещания JavaScript