我正在使用Node.js中的api进行学习,并了解了在崩溃应用程序之前可以让我的错误出现最后一个选项的选项...(uncaughtException)
注意:关于某些人不喜欢此功能的所有原因,我目前读得很好,所以请不要在此处发布这些问题。
我遇到的问题是这样的:
我为不同的代码段创建自定义错误类。例如Redis_Exception
,它会响应我的缓存层中的错误而抛出。
但是,以下内容并未涉及我的uncaughtException函数:
throw new Redis_Exception('Some error here');
相反,我的应用程序只是将
Redis_Exception: Some error here
打印到控制台。照常没有堆栈跟踪。是否有某些原因导致以这种方式抛出的错误不会冒泡到我的应用程序流程的顶部?
最佳答案
一种更简单的解决方法是,在快速服务器中添加带有4个参数的中间件,第一个参数是错误。这将覆盖finalhandler处理程序。
app.use((err, req, res, next) => {
// Similar to uncaughtException handler
// Log error, maybe send it to central server
// Send Custom Log message maybe?
return res.send('Nice server error to user');
}
您还应该保留
process.on('uncaughtException', fn);
来处理http请求响应管道之外的任何未捕获的异常。
关于node.js - uncaughtException无法捕获引发的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442972/