全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 7 分钟 ✍️ juanwangdev

Node.js 错误处理

健壮的错误处理机制是 Node.js 应用稳定运行的保障,掌握各类错误捕获方式至关重要。

同步错误处理

使用 try-catch 捕获同步代码中的错误:

JavaScript
function divide(a, b) {
  if (b === 0) {
    throw new Error('除数不能为零');
  }
  return a / b;
}

try {
  const result = divide(10, 0);
  console.log(result);
} catch (err) {
  console.error('捕获错误:', err.message);
}

异步回调错误处理

回调函数中的错误通过第一个参数传递:

JavaScript
fs.readFile('not-exist.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('文件读取失败:', err.message);
    return;
  }
  console.log(data);
});

Promise 错误处理

JavaScript
// catch 方法
fs.promises.readFile('file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(err => console.error(err));

// async/await + try-catch
async function readFile() {
  try {
    const data = await fs.promises.readFile('file.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error('读取失败:', err.message);
  }
}

EventEmitter 错误处理

未监听 error 事件会触发进程崩溃:

JavaScript
const EventEmitter = require('events');
const emitter = new EventEmitter();

// 必须监听 error 事件
emitter.on('error', (err) => {
  console.error('捕获错误事件:', err.message);
});

emitter.emit('error', new Error('发生错误'));

EventEmitter 触发 error 事件时,如果没有监听器,Node.js 会抛出异常并退出进程。

全局错误处理

JavaScript
// 未捕获的异常
process.on('uncaughtException', (err) => {
  console.error('未捕获异常:', err);
  process.exit(1);
});

// 未处理的 Promise 拒绝
process.on('unhandledRejection', (reason, promise) => {
  console.error('未处理的 Promise 拒绝:', reason);
});

错误类型

错误类型说明
Error通用错误
TypeError类型错误
ReferenceError引用错误
SyntaxError语法错误
RangeError范围错误

要点总结

  • 同步错误用 try-catch 捕获
  • 回调错误遵循 Error-First 模式,检查第一个参数
  • Promise 错误用 .catch() 或 try-catch + async/await
  • EventEmitter 必须监听 error 事件,否则进程崩溃
  • 全局错误处理作为最后防线,记录日志后应退出进程

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js 监听与触发事件
下一篇 → Node.js events 事件触发器模块
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库