кто-нибудь может объяснить, что такое коды ошибок в nodejs (не коды состояния) - PullRequest
0 голосов
/ 20 февраля 2019

С этим вопросом я сталкивался в своих интервью много раз, но до сих пор не могу найти ответ на этот вопрос.Я уже гуглил это, но не нашел точного ответа на это.Кто-нибудь, дайте мне знать точный ответ для этого.

Вопрос: Что такое коды ошибок в NodeJs?

Я ответил на коды ошибок.Но Интервьюер сказал, что не прошу коды статуса.Просьба объяснить ответ.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Вы столкнулись с этим вопросом, потому что код ошибки был введен в узле 8.x до 8, в классе Error было сообщение об ошибке, которое вызывало проблемы в самых простых вещах, из-за которых разработчики были вынуждены создавать собственные классы для Error.См. https://nodejs.org/docs/latest-v7.x/api/errors.html#errors_class_error

Позже в Узле 8 коды ошибок вводятся в узле 8.x для всех объектов ошибок, выданных API-интерфейсами Node.js 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
    }
}

Использование вышеупомянутой практики гарантирует, что если / когда сообщение изменится в будущем, код не будет затронут как ошибкакод остается без изменений.

0 голосов
/ 20 февраля 2019

Да коды ошибок и коды состояния разные вещи.Коды ошибок - это когда мы когда-либо в узле, например,

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

, это коды ошибок.Для получения более подробной информации, пожалуйста, проверьте этот блог на среднем Средний блог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...