process.uncaughtException如何在express中使用
代码很简单, app.js
const express = require('express')
const app = express()
const port = 3001
app.get('/', (req, res) => {
console.log(c);
res.send('dddd')
})
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))
process.on('uncaughtException', (e)=>{
console.error('process error is:', e.message);
process.exit(1);
});
process.on('unhandledRejection', (e)=>{
console.error('unhandledRejection error is:', e.message);
process.exit(1);
});
然后本地node app.js
启动server,浏览器访问http://localhost:3001/
, 控制台输出如下,为什么uncaughtException那个没有得到执行啊?
$ node app.js
Example app listening at http://localhost:3001
ReferenceError: c is not defined
at app.get (/Desktop/mine/test/app.js:7:17)
at Layer.handle [as handle_request] (/Desktop/mine/test/node_modules/express/lib/router/layer.js:95:5)
at next (/Desktop/mine/test/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Desktop/mine/test/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Desktop/mine/test/node_modules/express/lib/router/layer.js:95:5)
at /Desktop/mine/test/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Desktop/mine/test/node_modules/express/lib/router/index.js:335:12)
at next (/Desktop/mine/test/node_modules/express/lib/router/index.js:275:10)
at expressInit (/Desktop/mine/test/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/Desktop/mine/test/node_modules/express/lib/router/layer.js:95:5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
express 内部会捕捉同步的异常/错误.
你可以在后面加一个中间件:
就可以捕捉到express内部的错误了.
而异步的异常/错误, express内部是捕捉不到的. 比如:
这样你就能从
process.uncaughtException
中捕捉到这个错误了.可以参考链接: https://expressjs.com/en/guid...
名字不就说明问题了吗
未捕获的异常
未处理的rejection(不好翻译)
你用
Promise.reject(1)
或者(async function () {throw '1'})()
看看