在req.on上捕获了哪种类型的错误(''错误)

时间:2013-10-04 12:32:18

标签: node.js

我正在使用node.js我写了一个小代码

var http = require('http');


 var options = {
  hostname: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

我必须发送帖子请求开始我正在获取请求,为什么没有http.get()。在此请求中我得到404响应代码,这也是一个错误。但没有在req.on中捕获(&# 39;错误')。我想知道这个方法捕获了哪种错误?

1 个答案:

答案 0 :(得分:0)

来自http.request documentation

  

如果在请求期间遇到任何错误(使用DNS解析,TCP级别错误或实际的HTTP解析错误),则会在返回的请求对象上发出“错误”事件。

因此,只有在协议/连接级别出现错误时才会发出该事件。

然后,您可以在connect电话上处理HTTP错误:

var req = http.request(options, function(res) {
  if (res.statusCode == "404"){ ... }
  else if (...) {
      ...
  } else { // everything ok
      console.log('STATUS: ' + res.statusCode);
      console.log('HEADERS: ' + JSON.stringify(res.headers));
      ...
  }
});