async await
小于 1 分钟javascript
捕捉异常
catch捕捉异常
使用代码 const aa = await getName() 时需要使用 catch 捕捉异常,相反,如果异步方法 getName() 在 async 函数中 A 中调用了 reject 同时又没有使用 catch 捕捉异常则当前 const aa = await getName() 所在的函数 A 会被中断 - 不再执行 const aa = await getName() 后面的逻辑,案例代码如下
// 语法
try {
// 可能会抛出错误的代码
} catch (error) {
// 捕获并处理错误
} finally {
// 无论是否抛出错误,都会执行的代码(可选)
}
不使用 try/catch 的替代方案
async function fetchData() {
const response = await fetch("https://api.example.com/data");
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
}
// 调用处使用 Promise.catch 捕获错误
fetchData()
.then(data => {
console.log("Data:", data);
})
.catch(error => {
console.error("Error fetching data:", error);
});
或者在 await 后面立即使用 catch 捕捉异常,相对于 try/catch ,前者可以为一个 async 函数中的多个异步请求独立处理异常,而后者 try/catch 可以在包裹所有异步请求后统一做处理
async function fetchData() {
const response = await fetch('https://api.example.com/data').catch(error => {
console.error('Request failed:', error);
return null; // 返回兜底值
});
if (!response) return;
// 继续处理 response...
}
