05. Error Handling
Существует несколько подходов к обработкам ошибок внутри асинхронных функций:
try-catch,Использовать инструментарий Promise (
p.then(),p.catch(),Promise.try()),Использовать утилиты, что бы в результате
awaitвызова возвращать[data, err].
try-catch
try-catchКаждый вызов await, который может выбрасывать исключение необходимо оборачивать в catch:
async function asyncFunc() {
try {
await otherAsyncFunc();
} catch (err) {
console.error(err);
}
}
// Equivalent to:
function asyncFunc() {
return otherAsyncFunc().catch(err => {
console.error(err);
});
}Error handling with Promises
При вызове await P можно навешивать различные обработчики на P и тем самым использовать семантику then() и catch() вместе с await:
Structured return value
Можно перенять подход свойственный go где в результате вызова операции возвращается data, err написав функцию:
Тогда обработка асинхронного кода будет иметь вид:
У этого подхода есть преимущество в том, что на деструкции можно использовать значения по умолчанию:
Last updated
Was this helpful?