相关疑难解决方法(0)

Node.js最佳实践异常处理

我几天前刚开始尝试node.js.我已经意识到只要我的程序中有未处理的异常,Node就会终止.这与我所暴露的普通服务器容器不同,只有当未处理的异常发生且容器仍然能够接收请求时,工作线程才会死亡.这引出了一些问题:

  • process.on('uncaughtException')防范它的唯一有效方法吗?
  • process.on('uncaughtException')在异步进程执行期间是否会捕获未处理的异常?
  • 是否有一个已经构建的模块(例如发送电子邮件或写入文件),在未捕获的异常情况下我可以利用它?

我将非常感谢任何指针/文章,它将向我展示在node.js中处理未捕获的异常的常见最佳实践

exception-handling serverside-javascript node.js

736
推荐指数
5
解决办法
44万
查看次数

如何防止node.js崩溃?try-catch不起作用

根据我的经验,php服务器会向日志或服务器端抛出异常,但node.js只是崩溃.用try-catch包围我的代码也不起作用,因为一切都是异步完成的.我想知道其他人在他们的生产服务器上做了什么.

crash try-catch production-environment node.js

147
推荐指数
5
解决办法
8万
查看次数

从Node.JS中的未捕获异常中恢复

好的,所以我有一个问题.如果在处理HTTP请求时发生未捕获的异常,我就没有机会在http.ServerResponse对象上调用end()方法.因此,服务器永远挂起,永远不会满足请求.

这是一个例子:

var express = require('express');
var app = express.createServer();
var reqNum = 0;
app.get('/favicon.ico', function(req, res) {res.send(404);});
app.get('*', function(req, res, next) {
    console.log("Request #", ++reqNum, ":", req.url);
    next();
});
app.get('/error', function(req, res, next) {
    throw new Error("Problem occurred");
});
app.get('/hang', function(req, res, next) {
    console.log("In /hang route");
    setTimeout(function() {
        console.log("In /hang callback");
        if(reqNum >= 3)
            throw new Error("Problem occurred");
        res.send("It worked!");
    }, 2000);
});
process.on('uncaughtException', function(err) {
    console.log("Uncaught exception!", err);
});
app.listen(8080);
Run Code Online (Sandbox Code Playgroud)

如果您访问/错误,则会发生异常,但会被捕获.用户收到错误消息 - 没问题.但是,如果我访问/挂起,服务器最终将抛出未捕获的异常并永久挂起.任何后续的/ hang请求都将挂起.

这很糟糕.有关如何解决此问题的任何建议?

exception node.js uncaught-exception express

19
推荐指数
1
解决办法
9798
查看次数