Node.js 词条目录
前端Wiki/词条/异常处理与兜底

异常处理与兜底

定义Node 中捕获与兜底异常的一整套机制,防止进程因未捕获错误而退出

Node 的异常处理分几条线:同步代码用 try/catch;异步回调采用错误优先约定,回调的第一个参数永远是错误对象,要先判断再取结果;Promise 用 catch 或 async/await 包 try/catch。最危险的是未捕获的异常与未处理的 Promise 拒绝——它们会让进程直接退出,线上服务瞬间全挂。

兜底手段是在顶层注册 uncaughtException 与 unhandledRejection 记录现场日志,但这只是善后而非恢复手段——正确做法仍是修复具体错误,并配合 PM2 的自动重启策略把进程拉起。对 HTTP 服务来说,还要确保每条请求路径无论成功失败都会正常结束响应,避免连接悬挂占满句柄。

JavaScript
const fs = require('fs');

// 1. 错误优先回调:先判断错误
fs.readFile('not-exist.txt', 'utf8', (err, data) => {
  if (err) return console.error('读取失败: ' + err.message);
  console.log(data);
});

// 2. async/await 配合 try/catch
async function load() {
  try {
    const res = await fetch('https://example.com');
    return await res.text();
  } catch (err) {
    console.error('请求失败,走兜底逻辑');
    return null;
  }
}

// 3. 进程级兜底:只记录日志,不假装恢复
process.on('uncaughtException', (err) => {
  console.error('未捕获异常,进程将退出: ' + err.stack);
  process.exit(1);
});
⚠ 常见误区
🔗 相关词条错误处理机制回调与回调地狱
← 返回来源章节错误处理机制