可以解释一下nodejs中的错误代码(不是状态代码)吗

时间:2019-02-20 10:50:06

标签: javascript node.js error-handling mean-stack nodejs-stream

我在访谈中曾多次遇到这个问题,但仍然找不到答案。我已经用谷歌搜索了,但是没有找到确切的答案。请让我知道确切的答案。

问题:NodeJ中的错误代码是什么?

我回答了错误状态代码。但是采访者说,不是在问状态码。请解释答案。预先谢谢你。

2 个答案:

答案 0 :(得分:2)

您正面临这个问题,因为错误代码是在节点8.x之前的8中引入的,错误类中出现错误消息,这在非常基本的方面引起了问题,这是由于开发人员被迫为Error创建自定义类。请参阅https://nodejs.org/docs/latest-v7.x/api/errors.html#errors_class_error

稍后,在节点8中,错误代码在节点8.x中引入了由Node.js API抛出的所有错误对象 https://nodejs.org/api/errors.html#errors_class_error

节点错误代码: https://nodejs.org/dist/latest/docs/api/errors.html#errors_node_js_error_codes

为什么要使用错误代码?

直到Node7,Node.js引发的大多数错误都只有一条与之相关的消息。如果要让代码根据错误采取特定的措施,则必须将消息字符串与已知值进行比较。结果可能是这样的:

try {
// Do something
}
catch(error) {
    if (error.message == 'a simpe error'){
        // do something
    }
    else {
        // do something
    }
}

这不是一个好习惯,因为在大多数情况下,当您从Node.js中收到错误时,您的代码更有可能会简单地记录/显示消息,然后跳转到通用的恢复路径。

现在您可能已经注意到上面示例中使用的消息比较中有一个错字。嗯,这也可能发生在Node.js代码库中,或者节点可能会重新定义消息字符串。

对消息字符串的严格依赖也对国际化构成了挑战。

这应该允许将先前的示例重写如下:

try {
    // Do something
}
catch(error) {
    if (error.code == 'A_ERROR_CODE'){
        // do something
    }
    else {
        // do something
    }
}

通过上述做法,可以确保如果将来发生消息更改时,该代码不会受到影响,因为错误代码保持不变。

答案 1 :(得分:-1)

是的,错误代码和状态代码是不同的东西。 错误代码是指只要节点中有任何类似的错误代码

try{} catch(error){ error.code }

这些是错误代码。 有关更多详细信息,请在中等Medium Blog

上查看此博客。