全局uncaughtException处理器未生效的问题求助
全局uncaughtException处理器未生效的问题求助
我正在开发一个 Express + PostgreSQL 应用,想要实现一套全局错误处理系统,目前需要捕获项目里所有未被捕获的异常。服务器是用 nodemon 运行的。
比如像 console.log(x) 这种代码(x未定义),应该触发我自定义的错误处理逻辑,但目前没达到预期效果。
我把 process.on('uncaughtException', () => {}) 放在了根目录的 server.js 文件中,然后在同目录的 app.js 里写了 console.log(x) 来测试异常捕获。
以下是我的 server.js 代码:
import './src/config/dotenv.js'; import app from './app.js'; process.on('uncaughtException', (err) => { console.log(err.name, err.message); console.log('UNCAUGHT EXCEPTION! 💥 Shutting down...'); process.exit(1); }); const port = 3000; const server = app.listen(port, () => { console.log(`Server running on port ${port}...`); }); process.on('unhandledRejection', (err) => { console.log(err.name, err.message); console.log('UNHANDLED REJECTION! 💥 Shutting down...'); server.close(() => { process.exit(1); }); });
我已经尝试过这些方法,但都没解决问题:
- 把 uncaughtException 处理器放在最顶部,所有导入语句之前,但无效;
- 排查过
nodemon,确认问题不在它身上; - 其他文件里没有定义其他的 uncaughtException 处理器;
- 明确
console.log(x)是同步代码里的错误,我知道这个处理器只负责捕获同步代码的异常;
备注:内容来源于stack exchange,提问作者Corneliu
相关产品推荐
相关产品推荐

