NodeJS / Javascript:如何检测错误对象的返回值?

时间:2017-05-29 07:13:54

标签: javascript node.js

我有一个可能返回某个对象的函数,或者可能返回一个自定义错误对象。我无法检测错误对象类型。

我尝试过构造函数.match(/ Error / i)或尝试使用原型的Object.keys但没有任何效果。以下是代码?

    $this->spreadsheet = new Spreadsheet;
    $this->spreadsheet->setActiveSheetIndex(0);
    $sheet = $this->spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello world');
    $sheet->setTitle('First');

    $this->spreadsheet->createSheet();
    $this->spreadsheet->setActiveSheetIndex(1);
    $sheet = $this->spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello');
    $sheet->setTitle('Second');

    $this->spreadsheet->createSheet();
    $this->spreadsheet->setActiveSheetIndex(2);
    $sheet = $this->spreadsheet->getActiveSheet();
    $sheet->setTitle('Third');


    $writer = new Xlsx($this->spreadsheet);
    $writer->setOffice2003Compatibility(true);
    $writer->save($fileName);

如何检测输出错误类型?

2 个答案:

答案 0 :(得分:5)

您可以检查返回的对象是否为instanceof错误,如下所示

let y = x();
if(y instanceof Error) {
  // returned object is error
} else {
 //returned object is not error
}

答案 1 :(得分:0)

试试这个

All Error instances and instances of non-generic errors inherit from Error.prototype. As with all constructor functions, you can use the prototype of the constructor to add properties or methods to all instances created with that constructor.

属性

标准属性

Error.prototype.constructor

指定创建实例原型的函数。

Error.prototype.message

错误讯息。

Error.prototype.name

错误名称。

 try {
  throw new Error('Whoops!');
} catch (e) {
  console.log(e.name + ': ' + e.message);
}