回调函数错误处理
- 方式:在回调函数的第一个参数约定为错误对象。当异步操作出错时,将错误信息传递给这个参数,调用者通过判断该参数是否存在来处理错误。
- 示例:
const fs = require('fs');
fs.readFile('nonexistentfile.txt', 'utf8', (err, data) => {
if (err) {
console.error('读取文件出错:', err);
return;
}
console.log('文件内容:', data);
});
Promise错误处理
- 方式:使用
.catch()
方法捕获Promise链中任何一个Promise被拒绝(rejected)时抛出的错误。也可以在new Promise
构造函数中通过reject
传递错误。
- 示例:
function asyncFunction() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const shouldError = true;
if (shouldError) {
reject(new Error('模拟错误'));
} else {
resolve('操作成功');
}
}, 1000);
});
}
asyncFunction()
.then(result => console.log(result))
.catch(err => console.error('捕获到错误:', err));
async/await错误处理
- 方式:使用
try...catch
块包裹await
表达式,捕获异步操作抛出的错误。
- 示例:
async function asyncOperation() {
try {
const response = await fetch('nonexistenturl');
const data = await response.json();
console.log(data);
} catch (err) {
console.error('异步操作出错:', err);
}
}
asyncOperation();