quoting
class MyError extends Error {
constructor(message) {
super(message);
this.message = message;
this.name = 'MyError';
}
}
ไม่จำเป็นต้องมีthis.stack = (new Error()).stack;
เคล็ดลับขอบคุณที่super()
โทร
แม้ว่ารหัสดังกล่าวไม่สามารถส่งออกกองติดตามเว้นแต่this.stack = (new Error()).stack;
หรือError.captureStackTrace(this, this.constructor.name);
ถูกเรียกในBabel IMO อาจเป็นปัญหาหนึ่งที่นี่
จริงๆแล้วการติดตามสแต็กสามารถส่งออกได้ภายใต้Chrome console
และNode.js v4.2.1
ด้วยข้อมูลโค้ดนี้
class MyError extends Error{
constructor(msg) {
super(msg);
this.message = msg;
this.name = 'MyError';
}
};
var myerr = new MyError("test");
console.log(myerr.stack);
console.log(myerr);
ผลลัพธ์ของChrome console
.
MyError: test
at MyError (<anonymous>:3:28)
at <anonymous>:12:19
at Object.InjectedScript._evaluateOn (<anonymous>:875:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:808:34)
at Object.InjectedScript.evaluate (<anonymous>:664:21)
ผลลัพธ์ของ Node.js
MyError: test
at MyError (/home/bsadmin/test/test.js:5:8)
at Object.<anonymous> (/home/bsadmin/test/test.js:11:13)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Function.Module.runMain (module.js:467:10)
at startup (node.js:134:18)
at node.js:961:3