Node.js

异步和错误处理

Node.js Promise、async/await 和错误处理方式。

发布于 2026年5月30日0 views

Node.js 后端开发里,大部分操作都是异步的,比如数据库查询、HTTP 请求和文件读写。

Promise

Promise 用来表示一个未来才会完成的任务。

function getUser() {
  return Promise.resolve({ id: "1", name: "Alice" });
}

getUser().then((user) => {
  console.log(user.name);
});

async / await

async / await 让异步代码看起来更像同步代码。

async function main() {
  const user = await getUser();
  console.log(user.name);
}

实际项目中,async / await 可读性更好,也更适合配合 try / catch

错误处理

异步函数里的错误可以用 try / catch 捕获:

async function getProfile() {
  try {
    const user = await getUser();
    return user;
  } catch (error) {
    console.error(error);
    throw error;
  }
}

在接口服务中,通常不要在每个函数里直接返回杂乱错误,而是统一抛出错误,再交给全局错误处理中间件。

常见错误

不要忘记 await

const user = getUser();

这里的 user 是 Promise,不是真正的数据。

不要吞掉错误:

try {
  await saveUser();
} catch (error) {
  console.error(error);
}

如果捕获后不处理也不抛出,上层会以为操作成功了。

总结

Node.js 后端里异步代码很常见。推荐使用 async / await,错误用 try / catch 捕获,需要上层处理时继续 throw,最终交给统一错误处理。