在NodeJS中传递非关键错误的标准方法?

时间:2014-01-27 16:04:12

标签: node.js error-handling

在NodeJS中使用Error对象时,EventEmitters可以发出标准的'error'事件,如果没有处理它会自动变成Thrown错误。但是如何改变错误严重程度(即“信息”或“通知”错误与“警告”或“严重”)。据我所知,默认的Error对象上没有type属性。是否存在传递/处理各种严重性错误的现有标准方法?我正在考虑为我的模块实现我自己的标准,这样听众就像:

myThing.on('error', function(err) {
  if (err.severity & (ERR_WARNING | ERR_CRITICAl)) {
    console.log("Critical Failure!", err);
    proces.exit(0);
  }
});

这意味着他们可以设置自己的调试级别并忽略不符合该阈值的错误。这样的事情是否已作为标准存在?

2 个答案:

答案 0 :(得分:2)

您可以做的最好的事情是为非严重错误使用另一个事件名称(例如warning左右)。您也可以像这样实现自己的Error“子类”:

var inherits = require('util').inherits;

function MyError (message, severity) {
  this.name = 'MyError';
  this.severity = severity;
  this.message = message;
  Error.captureStackTrace(this, MyError);
}

inherits(MyError, Error);

答案 1 :(得分:1)

  

是否存在传递/处理各种严重性错误的现有标准方法?

是的,做一个console.error("something is wrong")。这样你的应用程序将继续正常运行,但会向stderr输出警告,确保人们最终会对其进行调查。