首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下nodejs中的错误代码(不是状态代码)是什么吗?

有人能解释一下nodejs中的错误代码(不是状态代码)是什么吗?
EN

Stack Overflow用户
提问于 2019-02-20 18:50:06
回答 2查看 3.5K关注 0票数 0

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

问: NodeJs的错误码是什么?

我回答了错误状态代码。但是面试官说,我不是在问状态码。请解释一下答案。提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2019-02-20 20:08:16

你正面临着这个问题,因为错误代码是在节点8.x中引入的,在8之前的节点中,错误类中有错误消息,这会在非常基本的事情上导致问题,由于开发人员被迫为错误创建自定义类。参考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抛出的大多数错误都只有一条消息与之关联。如果希望代码根据错误执行特定操作,则必须将消息字符串与已知值进行比较。结果可能是这样的:

代码语言:javascript
复制
try {
// Do something
}
catch(error) {
    if (error.message == 'a simpe error'){
        // do something
    }
    else {
        // do something
    }
}

这不是一个好的实践,因为在大多数情况下,当您从Node.js获得错误时,您的代码更有可能只是记录/显示消息,然后分支到一个通用的恢复路径。

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

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

这应该允许按如下方式重写前面的示例:

代码语言:javascript
复制
try {
    // Do something
}
catch(error) {
    if (error.code == 'A_ERROR_CODE'){
        // do something
    }
    else {
        // do something
    }
}

使用上面的实践将确保如果消息在将来发生变化,代码不会受到影响,因为错误代码保持不变。

票数 4
EN

Stack Overflow用户

发布于 2019-02-20 19:54:25

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

代码语言:javascript
复制
try{} catch(error){ error.code }

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54784530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档