[Música] fala Mestres beleza no vídeo de hoje nós vamos estar falando aqui sobre tratamento de erros né Nós vamos inicializar essa aula aqui esse módulo novo né sobre tratamento de erros e a gente vai começar a entender mais o que são os erros né como eles acontecem Como interpretar os erros e como fazer o tratamento tá então eu tenho aqui o o o arquivo né referente a essa aula de exceções Então nós vamos causar algumas exceções aqui e explorar elas para ver como que isso tudo acontece e como que a gente pode extrair informações das
exceções Tá então vamos iniciar aqui entendendo o que que é uma exceção né porque a exceção ela vai acontecer sempre que a gente tentar fazer uma coisa que é errada a nível ali de de compilar a nível de execução do código ou quando acontece algum erro e a gente quer reportar esse erro de alguma forma eh a gente tem que ter muito cuidado em relação a isso porque realmente existem coisas que a gente faz que é é incorreto pro compilador e o código não vai ser executado a máquina não vai entender o interpretador de Fato
né ele não vai entender o nosso código e a gente vai ter um erro e às vezes alguns bibliotecas ou alguns projetos isso aí aí a gente já começa a ir para um lado mais de padrão de projeto onde quando acontec alguma coisa errada e o que que pode ser essa coisa errada por exemplo o exemplo clássico de usuário né se a gente vai cadastrar um usuário a gente não colocou o nome para aquele usuário Isso tá errado né Isso foi um erro e como que a gente vai tratar esse erro a gente pode tratar
de algumas formas e uma delas é usando exceções tá então a gente vai entender esse contexto melhor aí das exceções começar ter essa visão maior aí de como que elas funcionam para aí sim a gente ver as possibilidades que nós temos então o que que acontece se eu chamar aqui ó tô aqui no arquivo exceções PJS eu vou chamar aqui a função andar e executar ela se eu salvo isso aqui tento executar o código temos um erro n erro de referência né que andar não está definido então o que que eu tentei fazer aqui eu
tentei executar uma coisa que não existe né E vai dar erro né vai que não tem como isso acontecer né não existe então a gente vai ter o problema e da mesma forma se eu digito alguma coisa aqui que não faz sentido vai dar erro né enfim que eu poderia ficar dando um monte de exemplo de coisas que dariam erro por exemplo vamos fazer mais um eu tenho uma variável inicializada aqui pessoa e aí eu tento acessar pessoa. nome se eu tento fazer isso pessoa é Indefinido né é uma variável vazia undefined então ess ponto
nome não existe então a gente vai ter erro também e enfim várias e várias opções várias e várias casos aí onde isso vai acontecer e desse erro né vamos olhar aqui mais pro erro porque dentro do erro no JavaScript né o o objeto padrão de erro que que é retornado dentro dele nós temos algumas propriedades que uma delas é a mensagem do erro né então aqui é um erro de tipo ele não pode ler as propriedades de underfed e nós temos também o stack Trace Tá o que que é o stack Trace eh ele vai
ser o ele vai indicar em onde que aconteceu aquele erro né Em qual posição em qual local do código aconteceu esse problema então aqui se a gente olha isso ó a gente começa lendo né ele não pode ler as propriedades de undefined onde foi né foi um objeto anônimo e aqui tá o o local no caso do arquivo que tá definido esse objeto Então tá aqui né no meu disco D mestre estril o tratamento de erro exceções PJS aqui é a coluna coluna não né a linha três na coluna oito então ele indica pra gente
até o arquivo a linha e a coluna o que tá dando o problema né então Aqui nós temos a linha três né o contador de linha aqui e essas colunas ele Ele conta o espaço eh no sentido vertical tá então se a gente olhar aqui ó no nosso vies code aqui na parte de baixo a gente pode ver que ele vai mostrar aqui ó linha três e a coluna né então de acordo eu movo o meu cursor na horizontal ele ele vai trocando ali a coluna né então a gente pode até imaginar em um em
um layout aí dividido por linhas né linhas e colunas onde as linhas né são as linhas horizontais e dividido verticalmente nós temos as colunas e o stack TR ele vai indicar pra gente onde de fato que tá dando o problema então se eu venho aqui na na linha oito né É exatamente na coluna oito é exatamente aqui que tá o problema então a gente consegue interpretar a partir do stack 3 e aqui no stack 3 ele vai dar pra gente o essa esse histórico completo né então deu erro nesse arquivo que esse arquivo chamou esse
módulo que chamou a extensão que carregou enfim ele mostra pra gente um esqueleto completo pra gente ter essa noção melhor de não só de onde deu erro mas a o que que o que que esse qual era o contexto né que esse erro aconteceu qual era o que que estava sendo executado naquele momento tá então no erro né Sempre que nós temos um essa exceção nós teremos esse objeto de erro relacionado e uma coisa que a gente pode fazer é lançar essas exceções né aqui no caso eu tentei executar o código e no momento de
execução teve esse problema e foi lançado esse código pelo interpretador do JavaScript né pelo node no caso então o node lançou essas exceções que no caso foi essas essas esses testes que eu fiz né foram todas lançadas pelo node porque a gente tava tentando fazer uma coisa que não fazia sentido do ponto de vista do node tá e Mas a gente pode fazer isso também do ponto de vista nosso de programadores então eu vou fazer o seguinte eu vou criar aqui uma função a função de soma né então soma vai receber o número um o
número dois e aqui no corpo dessa função Eu quero fazer uma verificação então eu vou verificar né se o número o número dois né que é o segundo número for igual a zero eu quero que dê um erro tá então eu posso por exemplo retornar zero retornar nulo retornar falso e isso vai tá no contexto do meu projeto né então no meu projeto eu quero indicar que quando acontecer um erro eu vou retornar nulo então a gente teria sempre O Retorno de nulo nesses casos aqui que a gente não quer realizar a operação Mas a
gente pode também lançar uma exceção né que é o ato de lançar um erro isso a gente fala que explodiu o erro né então a gente lança a exceção e isso vai ser tratado em algum lugar e aí tem uns detalhes quando a gente lança uma exceção que a gente vai ver isso aqui eu vou lançar a exceção aqui né para lançar a exceção a sintaxe a gente usa o TR né esse thr a gente escreve né E a gente vai é como se fosse um só que no troll ele tá ele tá relacionado a
exceções e a forma mais comum que nós temos aqui é o troll New error onde error é um objeto Global do JavaScript né e new está está isso aqui tá referente a classes e como a gente não falou de classes ainda eu não vou explicar muito o que que seria o O que que significa né esse New error mas a gente vai ver isso no futuro Hum e e é basicamente isso eu estou lançando né o o esse thr eu vou jogar vou lançar um um novo erro a gente pode interpretar assim e quando a
gente sempre que a gente joga lança a exceção é como se fosse um retorno então se eu tenho aqui embaixo eh o resultado de fato da soma né então retornaria número um ã no caso não é soma né é divisão a função de divisão que é onde divisão por zero né a gente não existe né divisão por zero Então se o segundo número for igual a zero eu lanço a exceção senão eu vou retornar o número um dividido pelo número dois tá então se a gente cai nesse caso da exceção essa parte de baixo aqui
não vai ser executada da mesma forma que o retorno né Eh sempre que eu retorno a função eh se tiver código abaixo do retorno ele não é executado então vamos fazer o seguinte eu vou chamar eu vou invocar aqui ó a função divisão e vou passar aqui o vou dividir dois por por por dois pra gente ver se isso aqui tá funcionando e eu tenho que pegar o resultado né então const resultado vou atribuir aqui e fazer um console log resultado executo o resultado é 1 é 2 divido por 2 é um Então tá funcionando
e agora se eu passar o 2 dividido por 0 e a gente executar nós temos aqui ó aconteceu um erro e ele me indicou né A AT divisão né divisão foi a função no arquivo tal e Aqui nós temos todo o stack Trace tá então a gente e e ele não continuou a execução do programa né E esse é o problema na verdade é a gente não quer a gente tenta ao máximo evitar exceções causar exceções que a gente não espera que era por exemplo executar uma função que não existe porque sempre que acontece esse
tipo de problema de exceção o programa ele não continua rodando né então como a gente pode ver aqui ou ele não retornou o número um dividido por número dois ele não fez o console log então o programa parou ali ele simplesmente parou de funcionar e a gente quer ao máximo evitar esse tipo de coisa então e e é aí que entra toda a parte de tratamento de erros que a gente vai ver na próxima aula tá aqui eu só tô e mostrando aqui essa ideia da exceção então o que que eu fiz né basicamente a
lógica Nossa foi correta eu criei um novo erro e nesse erro eu posso até passar uma mensagem para ele Ó o primeiro parâmetro dele aqui eu posso falar por exemplo e não é permitido divisão por zero se eu executar de novo nós temos aqui ó erro e a mensagem Nossa aqui ó não é permitido divisão por zero Então esse erro né o erro comum do JavaScript nós temos sempre que a gente lançar ele né lançar a exceção nós teremos a posição é o stack Trace e também a gente pode ter mensagens relacionadas a esse erro
para guiar quem tiver fazendo o debug aí né que é tratando os erros entendendo o que por que tá dando erro para ficar mais fácil para essa pessoa de entender O que que está acontecendo tá então o que eu quero deixar claro para vocês é isso que erros eles acontecem às vezes por erro da gente que está programando e tentando fazer alguma coisa errada e às vezes é um também também de certa forma é culpa do desenvolvedor mas às vezes alguns erros a gente não espera e quando eles acontecem nós temos esse problema de de
o programa simplesmente parar né de a exceção for Lan e quebrar o nosso o o nosso programa E aí na próxima aula que a gente falar mais sobre tratamento de erro a gente vai ver que a gente consegue usar as exceções pro nosso benefício né que foi esse exemplo que eu dei de criar um usuário sem nome eu posso tratar esse erro que é um erro de regra de negócio e não necessariamente um erro que vai quebrar o meu programa e esse erro de regra de negócio eu posso tratar ele usando também o lançamento de
exceções se isso fazer sentido Então a gente vai explorar mais isso na próxima aula para essa aula aqui vai ser isso tá então espero que eu tenha ajudado qualquer dúvida pode est deixando um comentário logo abaixo e é isso aí muito obrigado e até a próxima [Música]