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:

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

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

javascriptthrow 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptalert( 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:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('você está tentando dividir por 0, o que é proibido');
}
Задание 1

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

javascriptlet 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.