[Express] Handle Syncronous and Asyncronous Errors in Express

When express App run syncronous code:

app.get("/test", (req, res) => {
  throw new Error("Oh no! The world has ended!");
});

Those code works fine.

 

But when run Asyncronous code:

app.get("/test", async (req, res) => {
  throw new Error("Oh no! The world has ended!");
});

It has problem. 

 

1. Using 'next':

app.get("/test", async (req, res, next) => {
  next(throw new Error("Oh no! The world has ended!"));
});

 

2. Using try/catch:

app.get("/test", async (req, res) => {
    try {
          throw new Error("Oh no! The world has ended!");
    } catch(error) {
        next(error)
    }
});

 

3. Library:  express-async-errors

const express = require("express");
const app = express();
require("express-async-errors");

app.get("/test", async (req, res) => {
  throw new Error("Oh no! The world has ended!");
});

 

4. Custom middleware:

复制代码
const { errorHandling } = require("./utils/error");

app.get("/test", async (req, res) => {
  throw new Error("Oh no! The world has ended!");
});

app.use(errorHandling); // keep it as last step

app.listen(3001, function () {
  console.log("Server started.");
});
复制代码
复制代码
function errorHandling(error, req, res, next) {
  if (res.headersSent) {
    next(error);
  } else {
    res.status(500);
    res.json({
      message: error.message,
      ...(process.env.NODE_ENV === "production"
        ? null
        : { stack: error.stack }),
    });
  }
}

module.exports = { errorHandling };
复制代码

 

posted @   Zhentiw  阅读(168)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-07-27 [RxJava] Mapping
2018-07-27 [JavaEE] JTA, Java Transaction API, Repository for DB opreations
2017-07-27 [Angular] Two ways to create Angular Animation, using animation() or using state()
2016-07-27 [GIF] Shape Objects in GIF Loop Coder
点击右上角即可分享
微信分享提示