0

我在面试中多次遇到这个问题,但我仍然找不到答案。我已经用谷歌搜索了它,但没有找到确切的答案。请任何人告诉我这个的确切答案。

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

我回答了错误状态代码。但是面试官说,我不是在问状态码。请解释答案。先感谢您。

4

2 回答 2

4

您正面临这个问题,因为在 8 之前的节点 8.x 中引入了错误代码,Error 类中有错误消息,这导致了非常基本的问题,因为开发人员被迫为 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
    }
}

使用上述做法将确保如果/当消息在未来发生变化时,代码不会受到影响,因为错误代码保持不变。

于 2019-02-20T12:08:15.980 回答
-1

是的,错误代码和状态代码是不同的东西。每当我们在节点中有任何错误代码时

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

这些是错误代码。有关更多详细信息,请查看中型博客上的此博客

于 2019-02-20T11:54:25.040 回答