面试题答案
一键面试- 回调函数中的错误处理:
fs.readFile
接受一个回调函数作为参数,回调函数的第一个参数即为错误对象。如果操作成功,该错误对象为null
;如果操作失败,会传递一个错误对象。
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error('读取文件出错:', err); return; } console.log('文件内容:', data); });
- Promise 方式的错误处理:
- Node.js 较新版本支持将
fs.readFile
等方法包装成 Promise。可以使用util.promisify
进行包装,然后通过.catch
捕获错误。
const fs = require('fs'); const { promisify } = require('util'); const readFileAsync = promisify(fs.readFile); readFileAsync('example.txt', 'utf8') .then(data => { console.log('文件内容:', data); }) .catch(err => { console.error('读取文件出错:', err); });
- Node.js 较新版本支持将
- async/await 方式的错误处理:
- 结合
async/await
语法,使用try...catch
块来捕获错误,使代码看起来更像同步代码。
const fs = require('fs'); const { promisify } = require('util'); const readFileAsync = promisify(fs.readFile); async function readFileContent() { try { const data = await readFileAsync('example.txt', 'utf8'); console.log('文件内容:', data); } catch (err) { console.error('读取文件出错:', err); } } readFileContent();
- 结合