Моя основная стратегия обработки ошибок в коде async/await — это оборачивание вызовов await внутри блоков try/catch. Это делает обработку ошибок чистой, читаемой и похожей на синхронный код.
async function fetchData() {
try {
const res = await fetch(url);
const data = await res.json();
return data;
} catch (error) {
console.error("Failed:", error);
throw error;
}
}
throwerror.name или используешь instanceof для разной обработки сетевых ошибок, ошибок валидации и т.д.Для повторяющейся обработки ошибок в большом количестве async-функций можно использовать вспомогательную функцию-обёртку высшего порядка, чтобы уменьшить количество шаблонного кода:
const safeCall = async (fn) => {
try {
return [null, await fn()];
} catch (err) {
return [err, null];
}
};
Она возвращает кортеж [error, result], делая проверки ошибок явными без вложенных блоков try/catch.
Цель — убедиться, что ни один отклонённый promise не остаётся необработанным, держать логику ошибок поддерживаемой и обеспечивать осмысленную обратную связь — логирование, повторные попытки или передача ошибки пользователю.
При использовании async/await оборачивание всей функции в один блок try/catch — это лучшая практика, даже если разные шаги требуют разных стратегий обработки ошибок.
Новый — ещё не проверен сообществом
Вы