常规错误处理方式
- 回调函数方式:在
fs.readFile
的回调函数中,第一个参数通常是错误对象。如果读取文件过程中发生错误,该错误对象会被填充,通过检查该错误对象来进行相应的错误处理。
- Promise方式:Node.js 10.12.0版本开始,
fs
模块的很多方法都支持Promise形式的API。使用util.promisify
将基于回调的fs.readFile
转换为Promise形式,通过.catch
方法捕获错误。
- try...catch方式:在使用Promise形式的
fs.readFile
时,可以在async
函数中使用try...catch
块捕获错误,这种方式使错误处理代码更清晰和结构化。
示例代码
- 回调函数方式
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('读取文件错误:', err);
return;
}
console.log('文件内容:', data);
});
- Promise方式
const fs = require('fs');
const util = require('util');
const readFilePromise = util.promisify(fs.readFile);
readFilePromise('example.txt', 'utf8')
.then(data => {
console.log('文件内容:', data);
})
.catch(err => {
console.error('读取文件错误:', err);
});
- try...catch方式
const fs = require('fs');
const util = require('util');
const readFilePromise = util.promisify(fs.readFile);
async function readFileAsync() {
try {
const data = await readFilePromise('example.txt', 'utf8');
console.log('文件内容:', data);
} catch (err) {
console.error('读取文件错误:', err);
}
}
readFileAsync();