在try catch中捕獲異步錯誤有一點特殊之處,因為異步操作是在當前代碼塊之外執行的。通常情況下,異步操作會返回一個Promise對象,可以使用Promise的catch方法來捕獲異步操作的錯誤。
以下是一個例子,演示如何在try catch中捕獲異步錯誤:
try {
asyncFunction().then(result => {
console.log(result);
}).catch(error => {
console.error(error);
});
} catch (error) {
console.error('Caught error in try catch:', error);
}
async function asyncFunction() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Async error'));
}, 1000);
});
}
在上面的例子中,我們首先在try塊中調用了一個返回Promise對象的異步函數asyncFunction()
。在該函數中,我們使用setTimeout模擬一個異步操作,并在1秒后reject一個錯誤。在then方法中,我們打印了結果,而在catch方法中,我們捕獲了錯誤。
需要注意的是,try catch只能捕獲同步代碼塊中的錯誤,對于異步代碼塊中的錯誤,需要使用Promise的catch方法或async/await來捕獲。