Я пытаюсь лучше понять обработку ошибок при использовании async / await, сторонних библиотек и внешних API.
Учитывая следующий псевдокод:
const createConnectionRequest = async (args) => {
try {
const { data } = axios.post(url, args);
return data;
} catch (err) {
throw new Error(err);
}
}
Мое пониманиеthrow
может произойти в результате сбоя axios.post
, а не из-за проблемы с моим запросом.
Если ответ от моего API был 200, но включал какую-то ошибку, например.
{
status: 200,
error: 'Invalid fields supplied',
}
Я бы выбросил эту ошибку в блок try
и ожидал бы, что родительская вызывающая функция будет catch
it?
const createConnectionRequest = async (args) => {
try {
const { data } = axios.post(url, args);
if (data.error) {
throw new Error(data.error);
}
return data;
} catch (err) {
throw new Error(err);
}
}
...
const processor = async () => {
try {
await createConnectionRequest(...);
} catch (err) {
// handle error from API response here
throw new Error(err);
}
}