Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个基本的Node.js错误处理不起作用?_Javascript_Node.js_Error Handling - Fatal编程技术网

Javascript 为什么这个基本的Node.js错误处理不起作用?

Javascript 为什么这个基本的Node.js错误处理不起作用?,javascript,node.js,error-handling,Javascript,Node.js,Error Handling,Node.js: var https = require("https"); var request = https.get("google.com/", function(response) { console.log(response.statusCode); }); request.on("error", function(error) { console.log(error.message); }); 如果我将https://添加到谷歌域名中,那么我将获得

Node.js:

var https = require("https");


var request = https.get("google.com/", function(response) {
    console.log(response.statusCode);
});

request.on("error", function(error) {
        console.log(error.message);
});
如果我将https://添加到谷歌域名中,那么我将获得预期的状态代码200。按原样,我希望捕捉到错误,并向终端控制台打印类似于“connect ECONREFUSE”的错误消息。相反,它将stacktrace打印到终端。

如果您查看,您可以看到,如果URL解析失败(仅当您将其传递给
“google.com/”
时,它将失败,因为这不是一个有效的URL),那么它会同步抛出:

exports.get = function(options, cb) {
  var req = exports.request(options, cb);
  req.end();
  return req;
};

exports.request = function(options, cb) {
  if (typeof options === 'string') {
    options = url.parse(options);
    if (!options.hostname) {
      throw new Error('Unable to determine the domain name');
    }
  } else {
    options = util._extend({}, options);
  }
  options._defaultAgent = globalAgent;
  return http.request(options, cb);
};
因此,如果您想捕获特定类型的错误,您需要对
https.get()
调用try/catch,如下所示:

var https = require("https");

try {
    var request = https.get("google.com/", function(response) {
        console.log(response.statusCode);
    }).on("error", function(error) {
        console.log(error.message);
    });
} catch(e) {
    console.log(e);
}

请尝试打印just error,而不是error.Message。为什么要拒绝连接?请使用
https
协议,如
https://google.com
而不是
google.com