A aula de hoje trata-se sobre técnicas de tratamento de erros e exceções que fazem parte do modelo de domínio / regras de negócio da aplicação. Tópicos como exceções esperadas versus inesperadas, como manter o fluxo de execução explícito, como manter retornos expressivos e como ter clareza no que aconteceu através do retorno são abordados e implementados utilizando métodos diferentes e tudo baseado em experiências reais do meu dia a dia.
Alternativas exploradas:
- Usando null;
- Usando throw's genéricas;
- Entendendo objeto Error;
- Retornando objetos de erro de domínio;
- Padronizando interface de retorno com Either;
- Criando objeto de estado inválido da entidade.
Conceitos-chave:
- Exceções esperadas vs inesperadas;
- Fluxo de execução explícito;
- Retornos expressivos;
- Clareza no que aconteceu através do retorno.
Este projeto gira em torno da criação da entidade Person, que possui as seguintes propriedades:
- Nickname: uma string não vazia
- Age: um número inteiro e positivo
Este repositório conta com três branches:
- main
- boilerplate
- final
Caso você queira acompanhar a evolução do código durante a aula, a branch boilerplate
dá a estrutura inicial para você poder começar.
A branch main
contém o projeto em sua versão final em conformidade ao que foi mostrado no vídeo. Você pode acompanhar a evolução do projeto, em conformidade com os passos seguidos na aula, através do histórico de commits.
A branch final
possui alguns incrementos nos arquivos:
- src/Nickname.ts
- src/Person.ts
- app.ts Com a intenção de demonstrar as validações replicada nas demais funções
npm ci
: Instala as dependências via npm;npm run compile
: Transpila o código para JavaScript e os armazena na pastadist/
;npm run start:local
: Executa a aplicação, usando o arquivoapp.ts
como ponta de entrada;npm run start:watch
: Executa o mesmo quenpm run start:local
, reexecutando-o a cada alteração.
- Instale o Node.js (já vem com o npm) através do link disponibilizado acima;
- Execute o comando
npm ci
; - Execute o comando
npm start:local
ounpm run start:watch
para executar o código e ver os resultados; - Modifique o arquivo
app.ts
para modificar as entradas.
Lucas Lopes |