首页 > 解决方案 > Node.js v12.x 如何设置 Error.code 属性?

问题描述

在较新版本的 Node(我相信是 9 版之后)中,他们已经标准化了返回包含诸如 error.code 之类的属性的 Error 对象。我尝试构建一个 Error 对象并设置属性,但得到一个错误:

let err = new Error('sample error');
error.code = 'BADERR';

在 Error 类中利用新的 node.js 属性的正确方法是什么?

标签: javascriptnode.jserror-handling

解决方案


使用现代 javascript,您只需扩展Error类:

class BadError extends Error {
    constructor (message) {
        super(message);
        this.code = 'BADERR';
    }
}

用法:

let err = new BadError('sample error');

传统上你会做同样的事情,但使用原型:

function BadError (message) {
    this.message = message;
    this.code = 'BADERR';
}

BadError.prototype = new Error();

或者稍微不那么传统但仍然传统的方式:

function BadError (message) {
    this.message = message;
    this.code = 'BADERR';
}

BadError.prototype = Object.create(Error.prototype);

推荐阅读