在发送如下所示的请求时,不是使用传统的try/catch
来处理错误
let body;
try {
const response = await sendRequest(
"POST",
"/api/AccountApi/RefundGetStatus",
JSON.stringify(refundParams),
undefined,
headers
);
body = response.body;
} catch (error) {
log("error", "An error occurred sending a request", { error });
throw createError("An error has occurred", DefaultErrors.API_ERROR);
}
我在想是否有可能实现相同的结果,重写如下所示的错误处理。
const response = await sendRequest(
"POST",
"/api/AccountApi/RefundGetStatus",
JSON.stringify(refundParams),
undefined,
headers
).catch((err: any) => {
log("error", "An error occurred sending a request", { err });
throw createError("An error has occurred", DefaultErrors.API_ERROR);
});
上面的代码块是否能够处理未定义的错误,也许还有JSON.parse
错误?
答案 0 :(得分:2)
您可以同时使用
try {
await sendRequest()
} catch (err) {
// do something
}
或
sendRequest().catch(err => { // do something})
发现错误。
下面是一个简单的示例,您可以将其粘贴到typescript playgound进行尝试。
const sendRequest = (str: string) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('get response');
reject('error message');
}, 2000)
})
}
const test1 = async ()=> {
try{
await sendRequest('data');
} catch (err) {
// will print 'err===> error message'
console.log('err===>', err)
}
}
const test2 = async ()=> {
sendRequest('data').catch(err => {
// will print 'err===> error message'
console.log('err=====>', err)
})
}
test1();
test2();
test1()和test2()都将捕获该错误。