gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:09:58 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

Node 错误代码: 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 收到错误时,您的代码更有可能只是记录/显示消息,然后分支到公共(public)恢复路径。

现在您可能已经注意到上面示例中使用的消息比较中有一个拼写错误。好吧,Node.js 代码库也可能发生这种情况,或者 Node 有可能重新定义消息字符串。

对消息字符串的硬依赖也给国际化带来了挑战。

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

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

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

关于javascript - 有人可以解释一下nodejs中的错误代码是什么(不是状态代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54784530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com