Предисловие
Существует много типов ошибок, которые могут возникнуть в приложениях node.js. Например: когда возникает ошибка синтаксиса или ошибка во время выполнения, будет инициирована ошибка JavaScript; При попытке получить доступ к файлу, который не существует или не доступен, будет вызвана системная ошибка; В дополнение к ошибкам JavaScript и ошибкам системной ошибки пользователи также могут настроить ошибки.
1. ошибочная классификация
Node.js - это платформа выполнения JavaScript, а его ошибки приложения - это экземпляр Error или экземпляр подкласса Error .
В приложениях Node.js есть четыре возможных ошибок:
1. Стандартные ошибки JavaScript, такие как:
<EvalError> : брошен, когда вызовы eval() не сняты
<SyntaxError> : брошен при использовании нелегального синтаксиса JavaScript
<RangeError> : брошен, когда значение не находится в пределах указанного диапазона
<ReferenceError> : брошен при использовании неопределенной переменной
<TypeError> : при прохождении параметра типа ошибки
<URIError> : бросается, когда неверно используется глобальная функция URI
2. Системная ошибка. Этот тип ошибки запускается базовой системой, такой как попытка открыть несуществующий файл, попытка отправить данные через закрытую Soket и т. Д.
3. Пользовательские ошибки, такие ошибки запускаются пользователем в коде приложения.
4. Ошибка утверждения. Когда код нарушает юридическую логику, этот тип ошибки запускается модулем assert Node.js.
2. Ошибки и системные ошибки JavaScript
2.1 ошибки JavaScript и пользовательские ошибки
Стандартные ошибки JavaScript предоставляются языком JavaScript, что указывает на синтаксические ошибки или ненадлежащее использование API. Все ошибки являются экземпляром класса Error , в то время как стандартные ошибки JavaScript создаются самим языком, когда возникает ошибка.
При настройке ошибок используйте конструктор для создания экземпляра:
> Бросьте новую ошибку («Произошла ошибка, это сообщение об ошибке»); ошибка: сообщение об ошибке было найдено в Repl: 1: 7 At Replserver.defaulteval (Repl.js: 248: 27) в Bound (Domain.js: 280: 14) At spurserver.runbound [AS evel] (Domain.js: 293: 12) AT Spepserver. В Emitone (Events.js: 82: 20) на replserver.emit (events.js: 169: 7) в Replserver.Interface._online (readline.js: 210: 10) на replserver.interface._line (readline.js: 549: 8) в sperserver.interface._ttywrite (readline.js: 826: 14).
Как указано выше, мы настроили ошибку и бросили ошибку, используя ключевое слово Thr. В этом объекте ошибки он включает message об ошибке и stack информации об стеке ошибок. После захвата исключения эту информацию можно получить через следующие два свойства:
1. error.message - Сообщение об ошибке
2. error.stack -
В дополнение к свойствам самого экземпляра ошибки вы также можете настроить некоторые свойства ошибок. Например, настройте статус свойства, который представляет статус:
var error = new Error ('посещенная вами страница не существует »); error.status = 404;2.2 Системная ошибка
Системные ошибки - это расширение объектов Error JavaScript, которые представляют ошибки работы, с которыми могут обрабатывать программы, и эти сообщения об ошибках генерируются на системном уровне. В дополнение к атрибутам в экземпляре Error , экземпляр системной ошибки также включает в себя следующие атрибуты:
1. error.syscall - строка, представляющая сбой системы системного вызова
2. error.errno - целочисленный код ошибки
3. error.code - представляет строку ошибки, обычно начинающуюся с буквы eable e
3. Захват исключений
Node.js принимает основу для событий и асинхронное программирование, что означает, что try / catch не может улавливать ошибки, которые возникают при асинхронной обработке. Для этого случая мы можем использовать следующие два способа поймать или передать ошибку:
Захват исключений в функции обратного вызова Node.js
Node.js имеет много асинхронных API, которые впоследствии обрабатываются с помощью обратного вызова обратного вызова. Если возникает ошибка, объект Error обычно включается в первый параметр функции callback ; Если ошибка не произойдет, первый параметр будет null . нравиться:
const fs = require ('fs'); fs.readfile ('a insestence file', (err, data) => {if (err) {console.error ('read file', err); return;} // Другая обработка});Обработка ошибок на основе событий
Если объект является EventEmitter , ошибка может быть захвачена и обработана через的'error' объекта:
const net = require ('net'); const connection = net.connect ('localhost'); // Добавить обработчик событий «ошибка» в потоку: connection.on ('error', (err) => {// Если соединение сбросится на сервере или не может подключиться к указанному серверу // или другим ошибкам соединения, ошибку будет передана здесь, чтобы конфисковать.Суммировать
Выше приведено краткое изложение некоторых типов ошибок в node.js. Если вы можете понять типы ошибок в node.js, вы можете помочь нам лучше обрабатывать ошибки и исключения. Я надеюсь, что содержание этой статьи будет полезно для всех.