Я хочу использовать onerror для перехвата и регистрации всех ошибок, которые происходят в моем приложении JavaScript. Это работает, как и ожидалось, за исключением случаев использования обещаний или асинхронных функций.
В следующем фрагменте исключение, выданное fail
, перехватывается, как и ожидалось, но rejectPromise
и throwAsync
вместо вызова обработчика onerror всегда показывают Uncaught (in promise) Error
в консоли?
Как я могу всегда перехватывать все ошибки в базе кода, которая использует обещания и асинхронные функции?
window.onerror = function(message, source, lineno, colno, error) {
console.log('onerror handler logging error', message);
return true;
}
function rejectPromise() {
return Promise.reject(new Error('rejected promise'));
}
async function throwAsync() {
throw new Error('async exception');
}
function fail() {
throw new Error('exception');
}
rejectPromise().then(() => console.log('success'));
throwAsync();
fail();