‫Instrutor: Então, até este ponto do curso,
‫não tratamos os erros
‫de maneira adequada ou em um local central em nossa aplicação.
‫O que fizemos foi simplesmente enviar de volta
‫uma mensagem de erro como JSON em cada gerenciador de rota,
‫caso algo desse errado.
‫Direito?
‫Então, é basicamente isso que vamos corrigir nesta seção.
‫Mas, por enquanto, vamos dedicar
‫um minuto apenas para obter uma breve visão geral do tratamento de erros no Express.
‫E começamos realmente distinguindo entre
‫dois tipos de erros que podem ocorrer.
‫Erros operacionais e erros de programação.
‫Portanto, erros operacionais são problemas que
‫podemos prever que acontecerão inevitavelmente em algum
‫momento no futuro.
‫E então só precisamos lidar com eles com antecedência.
‫Eles não têm nada a ver com bugs em nosso código.
‫Em vez disso, eles dependem do usuário, do sistema
‫ou da rede.
‫Portanto, coisas como um usuário acessando uma rota inválida, inserindo dados
‫inválidos ou um aplicativo falhando ao se conectar ao
‫banco de dados.
‫Todos esses são erros operacionais que
‫teremos de tratar
‫a fim de preparar nossa aplicação para esses casos.
‫Você também verá o termo "exceção"
‫sendo usado em vez de
‫erro e, embora sejam conceitualmente diferentes, muitas
‫pessoas usam os termos
‫erro e exceção de forma intercambiável.
‫E vou chamá-los
‫de "erros" neste curso também para evitar confusão.
‫De qualquer forma, temos erros de programação.
‫Que são simplesmente bugs que nós,
‫desenvolvedores, introduzimos em nosso código.
‫Como, por exemplo, tentar ler
‫propriedades de uma variável indefinida, usando await sem async,
‫acidentalmente usando request. consulta em vez de solicitação. corpo, ou muitos
‫outros erros, realmente, que possamos cometer.
‫Então, você sabe como funciona, certo?
‫E eles são realmente
‫inevitáveis, mas também mais difíceis de encontrar e manusear.
‫Ok, então, é importante que você entenda
‫essa diferença crucial entre erros operacionais e
‫erros de programação.
‫Portanto, quando falamos sobre tratamento de erros com o
‫Express, queremos dizer principalmente apenas erros operacionais.
‫Porque esses são os que
‫são fáceis de capturar e manipular com nosso aplicativo Express.
‫E o Express, na verdade, vem com tratamento de
‫erros pronto para uso.
‫Portanto, tudo o que temos
‫a fazer é escrever um middleware global expresso de
‫tratamento de erros que, então, detectará os
‫erros provenientes de todo o aplicativo.
‫Então, não importa se é um erro vindo de um manipulador
‫de rota, ou um validador de modelo ou realmente, em algum outro lugar,
‫o objetivo é que todos esses erros
‫terminem em um middleware de gerenciamento de erros central.
‫Para que possamos enviar uma boa resposta ao cliente,
‫informando-o do que aconteceu.
‫E então, realmente, lidar com este caso significa
‫apenas enviar uma resposta permitindo ao usuário saber o que aconteceu.
‫Mas o manuseio também pode significar, em outros
‫casos, repetir a operação ou travar o servidor, ou
‫simplesmente ignorar o erro por completo.
‫Às vezes, essa é a melhor opção.
‫Agora, a beleza de ter um middleware global de tratamento de
‫erros é que ele permite uma boa separação de interesses.
‫Portanto, não precisamos nos preocupar com o
‫tratamento de erros diretamente em nossa lógica de negócios ou em
‫nossos controladores, ou em qualquer lugar de nossa aplicação.
‫Podemos simplesmente enviar os erros para o manipulador de erros, que
‫decidirá o que fazer com eles a seguir.
‫Tudo bem?
‫Então, com tudo o que
‫foi dito, vamos começar a implementar isso.