Eva*_* P. 13 javascript inheritance custom-errors node.js
我对在JavaScript中制作自定义Error类的"正确"方法的理解是这样的:
function MyError(message) {
this.name = "MyError";
this.message = message || "Default Message";
}
MyError.prototype = new Error();
MyError.prototype.constructor = MyError;
Run Code Online (Sandbox Code Playgroud)
(代码片段来自https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error.)
使用NodeJS,如果我尝试检查这种类型的错误,如:
var err = new MyError("whoops");
assert.ifError(err);
Run Code Online (Sandbox Code Playgroud)
...回溯将显示我在编译时创建的Error对象的上下文,它是MyError的原型,而不是我用"new MyError()"创建的MyError对象.
有没有什么方法可以获得实际错误的正确回溯数据,而不是原型?
Jay*_*mar 36
我们需要调用super函数 - captureStackTrace
var util = require('util');
function MyError(message) {
Error.call(this); //super constructor
Error.captureStackTrace(this, this.constructor); //super helper method to include stack trace in error object
this.name = this.constructor.name; //set our function’s name as error name.
this.message = message; //set the error message
}
// inherit from Error
util.inherits(MyError, Error);
Run Code Online (Sandbox Code Playgroud)
您可以使用此节点模块轻松扩展错误类型 https://github.com/jayyvis/extend-error
| 归档时间: |
|
| 查看次数: |
8040 次 |
| 最近记录: |