MST

星途 面试题库

面试题:JavaScript 中 Node 默认异步下错误处理的基本方式

在 Node.js 环境中,当使用默认的异步操作(如文件系统的异步读写等)时,常见的错误处理方式有哪些?请以 `fs.readFile` 为例进行说明。
26.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 回调函数中的错误处理
    • fs.readFile 接受一个回调函数作为参数,回调函数的第一个参数即为错误对象。如果操作成功,该错误对象为 null;如果操作失败,会传递一个错误对象。
    const fs = require('fs');
    fs.readFile('example.txt', 'utf8', (err, data) => {
        if (err) {
            console.error('读取文件出错:', err);
            return;
        }
        console.log('文件内容:', data);
    });
    
  2. 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);
        });
    
  3. 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();