MyError延伸不按预期工作

时间:2017-01-17 13:00:45

标签: javascript node.js ecmascript-6

Error: Oops!
    at Object.<anonymous> (/home/karl/dev/node/project/exceptions.js:19:11)

第一个错误吐出:

{ Error
    at MyError.ExtendableError (/home/karl/dev/node/project/exceptions.js:7:23)
...

第二个:

MyError: Oops!

我期待第二个陈述{{1}}。

2 个答案:

答案 0 :(得分:0)

您忘了在构造函数

上添加this.name

'use strict';

class ExtendableError extends Error {
    constructor(message) {
        super();
        this.message = message;
        this.stack = (new Error()).stack;
        this.name = this.constructor.name;
    }
}

class MyError extends ExtendableError {
    constructor(message) {
        super(message);
        this.name = "MyError" //Here you put the name
    }
}

try {
    throw new Error('Oops!');
} catch (err) {
    console.log(err);
}

try {
    throw new MyError('Oops!');
} catch (err) {
    console.log(err);
}

答案 1 :(得分:0)

正在生成第一个异常,出现错误消息,在第19行,这就是你调用throw new错误的地方。

第二个,然而,它位于第7行,这意味着它是从

调用的
this.stack = (new Error()).stack; 

并且暗示当你调用throw new MyError时,会在此行产生一个内部异常。

您需要检查该异常成功的原因,并尝试在系统按预期工作之前修复它。

也许你应该使用你的super.stack,而不是在ExtendableError构造函数中创建一个新的Error对象