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

问题描述 投票:0回答:2

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

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

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

javascript node.js error-handling mean-stack nodejs-stream
2个回答
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
投票

是,错误代码和状态代码是不同的东西。错误代码是指节点中有任何错误代码,例如

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

这些是错误代码。有关更多详细信息,请在Medium Blog]上查看此博客。

© www.soinside.com 2019 - 2024. All rights reserved.