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}}。
答案 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对象