Есть три основных подхода к обработке ошибок в цепочках Promise без использования async/await.
.catch()Наиболее распространённый и рекомендуемый подход — добавление .catch() в конец цепочки Promise:
fetch('/api/data')
.then(response => response.json())
.catch(error => console.error('Error:', error));
.catch() для дальнейшего выполнения.then() с двумя коллбэкамиМетод .then() принимает необязательный второй аргумент в качестве обработчика отклонения:
fetch('/api/data')
.then(
response => response.json(),
error => console.error('Error:', error)
);
.catch(), из-за ограниченной области действияЧтобы поймать любые необработанные отклонения, которые прошли сквозь цепочку, используй глобальное событие unhandledrejection:
window.addEventListener('unhandledrejection', event => {
console.error('Unhandled rejection:', event.reason);
});
Всегда добавляй .catch() к каждой цепочке Promise, чтобы избежать молчаливых сбоев. Используй глобальный обработчик unhandledrejection как последний рубеж защиты, а не как основную стратегию обработки ошибок.
Метод .catch() обрабатывает только отклонения от непосредственно предшествующего .then(), тогда как второй аргумент обратного вызова в .then() перехватывает ошибки из всей цепочки.
Новый — ещё не проверен сообществом
Вы