Node.js Express捕获全局异常的三种方法实例分析
在Node.js Express应用开发中,捕获全局异常肯定是一个必要的技能。那么,在Node.js Express中,我们有哪些方法可以捕获全局异常呢?接下来,我们将会详细讲解使用三种不同方法捕获全局异常的实例分析。
方法一:process.on("uncaughtException")函数
使用process.on("uncaughtException")函数可以捕获到未被捕获的异步异常,代码如下:
process.on("uncaughtException", (err) => {
console.log(`未被捕获的异常:${err.message}`);
});
方法二:process.on("unhandledRejection")函数
使用process.on("unhandledRejection")函数可以捕获到未被捕获的Promise异常,代码如下:
process.on("unhandledRejection", (err) => {
console.log(`未被捕获的Promise异常:${err.message}`);
});
方法三:Express中间件
使用Express中间件可以捕获到同步和异步异常,代码如下:
app.use((err, req, res, next) => {
console.error(`捕获到的异常:${err.message}`);
res.status(500).send('服务器错误');
});
示例一:使用process.on("uncaughtException")函数捕获全局异常
在下面的示例中,我们将使用process.on("uncaughtException")函数捕获全局异常。代码如下:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === "/error") {
throw new Error("自定义异常");
}
res.end("Hello World");
});
process.on("uncaughtException", (err) => {
console.log(`未被捕获的异常:${err.message}`);
});
server.listen(8080, () => {
console.log("server is running at http://localhost:8080");
});
运行示例,当访问http://localhost:8080/error时,会出现未被捕获的异常,控制台输出"未被捕获的异常:自定义异常"。
示例二:使用Express中间件捕获全局异常
在下面的示例中,我们将使用Express中间件捕获全局异常,代码如下:
const express = require("express");
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((err, req, res, next) => {
console.error(`捕获到的异常:${err.message}`);
res.status(500).send('服务器错误');
});
app.get("/error", (req, res) => {
throw new Error("自定义异常");
})
app.listen(8080, () => {
console.log("server is running at http://localhost:8080");
});
运行示例,当访问http://localhost:8080/error时,会出现捕获到的异常,网页会显示"服务器错误",控制台输出"捕获到的异常:自定义异常"。
通过以上两个示例,我们可以清楚地了解到了如何使用process.on("uncaughtException")函数和Express中间件捕获全局异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js express捕获全局异常的三种方法实例分析 - Python技术站