Prefácio
Existem muitos tipos de erros que podem ocorrer nos aplicativos Node.js. Por exemplo: quando ocorre um erro de sintaxe ou erro de tempo de execução, um erro de JavaScript será acionado; Ao tentar acessar um arquivo que não existe ou não é acessado, um erro do sistema será acionado; Além dos erros de JavaScript e erros de erro do sistema, os usuários também podem personalizar os erros.
1. Classificação incorreta
O Node.js é uma plataforma de tempo de execução do JavaScript, e seus erros de aplicativo são todos uma instância Error ou Error .
Nos aplicativos Node.js, existem quatro erros possíveis:
1. Erros de JavaScript padrão, como:
<EvalError> : jogado quando as chamadas eval() falham
<SyntaxError> : Jogado ao usar sintaxe ilegal de JavaScript
<RangeError> : jogado quando um valor não está dentro do intervalo especificado
<ReferenceError> : jogado quando a variável indefinida é usada
<TypeError> : Ao passar um parâmetro de tipo de erro
<URIError> : jogado quando uma função global de URI é usada incorretamente
2. Erro do sistema. Esse tipo de erro é acionado pelo sistema subjacente, como tentar abrir um arquivo inexistente, tentando enviar dados através de um soket fechado, etc.
3. Erros personalizados, esses erros são acionados pelo usuário no código do aplicativo.
4. Erro de afirmação. Quando o código viola a lógica legal, esse tipo de erro é acionado pelo módulo assert Node.js.
2. Erros de JavaScript e erros do sistema
2.1 Erros de JavaScript e erros personalizados
Os erros JavaScript padrão são fornecidos pelo idioma JavaScript, indicando erros de sintaxe ou uso inadequado de APIs. Todos os erros são uma instância Error , enquanto os erros de JavaScript padrão são criados pelo próprio idioma quando ocorre um erro.
Ao personalizar erros, use o construtor para criar uma instância:
> lançar um novo erro ('Ocorreu um erro, esta é a mensagem de erro'); erro: uma mensagem de erro foi encontrada em Repl: 1: 7 em replServer.DefaultEval (Repl.js: 248: 27) em Bound (Domain.js: 280: 14) em ReplServer.rUnbound [AS EVVEN] (DOMAIN.JS: 293: 293: 14) em REPLSERVER.RUNBOUND [AS EVAL] ( em emitone (events.js: 82: 20) em replServer.emit (events.js: 169: 7) em replserver.interface._online (readline.js: 210: 10) em replServer.interface._Line (readline.js: 549: 8) em replServer.inter._tyface (liner (549: 8: Como acima, personalizamos um erro e lançamos o erro usando a palavra -chave Throw. Neste objeto de erro, ele inclui a message de erro e a stack de informações da pilha de erros. Após a captura de exceção, essas informações podem ser acessadas pelas duas propriedades a seguir:
1. error.message - Mensagem de erro
2. error.stack - Erro Stack Trace Informações
Além das propriedades da própria instância de erro, você também pode personalizar algumas propriedades de erro. Por exemplo, personalize um status de propriedade que representa o status:
var error = novo erro ('A página que você visitou não existe'); error.status = 404;2.2 Erro do sistema
Os erros do sistema são uma extensão dos objetos Error de JavaScript, que representam erros operacionais que os programas podem lidar, e essas mensagens de erro são geradas no nível do sistema. Além dos atributos na instância Error , a instância de erro do sistema também inclui os seguintes atributos:
1. error.syscall - Uma string que representa as informações de chamada do sistema com falha
2. error.errno - Um código de erro inteiro
3. error.code - representa uma string de erro, geralmente começando com a letra capital E
3. Captura de exceção
O Node.JS adota base de programação orientada a eventos e assíncrona, o que significa que try / catch não pode capturar erros que ocorrem ao processar de forma assíncrona. Neste caso, podemos usar as duas maneiras a seguir de capturar ou passar o erro:
Captura de exceção na função de retorno de chamada node.js
O Node.js possui muitas APIs assíncronas, que são subsequentemente processadas através do retorno de chamada da função de retorno de chamada. Se ocorrer um erro, um objeto Error geralmente será incluído no primeiro parâmetro da função callback ; Se houver erro, o primeiro parâmetro será null . como:
const fs = requer ('fs'); fs.readfile ('um arquivo inexistente', (err, dados) => {if (err) {console.error ('leia o erro do arquivo', err); return;} // outro processamento});Manipulação de erros baseada em eventos
Se o objeto for um EventEmitter , o erro poderá ser capturado e tratado através do的'error' objeto:
const net = requer ('net'); const conexão = net.connect ('localhost'); // adicione um manipulador de eventos 'error' ao fluxo: conexão.on ('erro', (err) => {// se a conexão for redefinida pelo servidor ou não pode se conectar ao servidor especificado // ou outros erros de conexão, o erro será passado para o constror.Error.Error.Error (não;Resumir
O exposto acima é um resumo de alguns tipos de erro no node.js. Se você pode entender os tipos de erro no Node.js, poderá nos ajudar a lidar melhor com erros e excelentes capturas. Espero que o conteúdo deste artigo seja útil para todos.