⊗jsSpExcThr 145 of 294 menu

Lançamento de exceções em JavaScript

Nas lições anteriores, aprendemos dois locais onde o JavaScript lança uma exceção em caso de problemas.

No seu projeto, no entanto, podem haver outras situações que para você são excepcionais, mas para o JavaScript não são. Nesse caso, você pode criar e lançar suas próprias exceções personalizadas.

Vamos analisar a sintaxe necessária para isso. Primeiro, a exceção precisa ser criada usando o comando new Error, passando o texto da exceção como parâmetro:

new Error('texto da exceção');

Em seguida, esta exceção deve ser lançada usando o comando throw:

throw new Error('texto da exceção');

Lançar uma exceção faz com que o JavaScript considere que uma situação excepcional ocorreu. Isso significa que tal exceção pode ser capturada usando a construção try-catch e tratada da maneira desejada.

Vamos ver em um exemplo como usar isso. Suponha que temos uma função que divide um número por outro:

function div(a, b) { return a / b; }

Vamos considerar que a divisão por zero é proibida e, ao tentar fazê-lo, deve ocorrer uma situação excepcional. Para isso, verificaremos na função se há uma tentativa de divisão por 0. Se não houver - dividiremos, e se houver - lançaremos uma exceção:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('erro de divisão por zero'); } }

Vamos primeiro tentar dividir por 0, sem capturar a exceção:

alert( div(3, 0) );

Nesse caso, a execução do script será interrompida e aparecerá um erro no console com o texto 'erro de divisão por zero' (verifique). Vamos agora capturar nosso erro e tratá-lo de alguma forma:

try { alert( div(3, 0) ); } catch (error) { alert('você está tentando dividir por 0, o que é proibido'); }

Em JavaScript, a tentativa de calcular a raiz quadrada de um número negativo não resulta no lançamento de uma exceção:

let result = Math.sqrt(-1); console.log(result); // exibirá NaN

Escreva sua própria função que calculará a raiz quadrada de um número e, ao mesmo tempo, lançará uma exceção se a raiz for calculada a partir de um número negativo.

ptkabnsvhi