我试图更好地了解使用异步/等待,第三方库和外部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
吗?
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);
}
}