如何在http.get响应中处理未捕获的异常

我有这个代码使用API​​从第三方网站下载新闻提要。 其设置为每5秒运行一次,并引发可能发生的任何新闻交易。 问题似乎是在没有发生新交易的情况下。

通过添加process.on('未捕获的异常',function(error){console.log(“hmph”)})cron作业可以在5秒钟后继续,因此我试图保持原样; 但是,我添加了console.log(“hmph”),现在我很困惑。

第一次,控制台会写hmph。 5秒钟后它将写入hmph hmph

等等。 我知道我必须错过一些东西,但我不太确定它是什么。 我试着在else语句中执行request.end(),但错误仍然激发。

如果没有process.on('uncaught ...'),则抛出的错误是:

events.js:71个参数[1]; //未处理的'错误'事件^错误:解析TCP.onread(net.js:403:27)处的Socket.socketOnData(http.js:1367:20)错误

与proccess.on('uncaught ...')console.log(错误)是:

{[Error:Parse Error] bytesParsed:161,code:'HPE_INVALID_CONSTANT'}

我该如何正确处理这个错误?

缩写代码:

var job = new cronJob('*/5 * * * * *', function(){
  var request = http.get({
                            host: 'www.example.com',
                            path: '/news_feed?apicode=myapicode',
                            port: 80,
                            headers: { 'accept-encoding': 'gzip' } 
                         })

  request.on('response', function(response){
    if (response.statusCode == 200){
      // gunzip response, save response to mongodb
    } 
    else
    {
      // here is where the error is occuring
      process.on('uncaughtException',function(error){
        console.log(error);
        console.log("hmph");
    }
  });
}, null, true);

每次发出请求时,都会绑定一个新的uncaughtException处理程序,因此发送第一个请求时,会绑定第一个请求,当它发生失败时会打印一个错误,然后在下一个请求中添加另一个处理程序,当第一个和第二个处理程序都失败时,它将运行。

检查错误,并在这里讨论这种类型的错误:https://github.com/joyent/node/issues/3354看起来你正在连接的服务器可能会做一些奇怪的事情。 对你来说最简单的解决方案可能就是现在使用uncaughtException处理程序。 也就是说,这不是理想的,你不应该把它作为解决这样的未来问题的一般解决方案。

var job = new cronJob('*/5 * * * * *', function(){
  var request = http.get({
    host: 'www.example.com',
    path: '/news_feed?apicode=myapicode',
    port: 80,
    headers: { 'accept-encoding': 'gzip' } 
  });
  request.on('response', function(response){
    if (response.statusCode == 200){
      // gunzip response, save response to mongodb
    }
  });
}, null, true);

process.on('uncaughtException',function(error){
  console.log(error);
  console.log("hmph");
});
链接地址: http://www.djcxy.com/p/46455.html

上一篇: how to handle uncaught exception in http.get response

下一篇: Node Exception Handling