Os erros são úteis para reportar quando algo está errado ou inesperado num programa ou num excerto de código.
São objetos JavaScript.
A principal propriedade deste objeto é message:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
Com a sintaxe throw, podes lançar um erro.
throw new Error('Oops');
Quando um erro é lançado, a execução atual é interrompida e retoma no primeiro bloco catch da pilha de chamadas.
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
Tal como acontece com qualquer classe em JavaScript, as subclasses podem herdar de Error para criar erros personalizados, usando a palavra-chave extends.
A sintaxe instanceof verifica se o erro capturado é uma instância de uma subclasse específica de Error.
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
Além do objeto Error, existem outros objetos de erro incorporados. Podes saber mais sobre isto aqui
Também podes definir o teu próprio tipo de erro personalizado, criando uma classe que estende um dos tipos de erro incorporados
class MyCustomError extends Error {}
Embora a sintaxe throw seja normalmente usada para lançar um objeto Error, o JavaScript é flexível e permite-te lançar uma string, um null ou qualquer tipo primitivo.
Embora isto não seja padrão em JavaScript, a maioria dos ambientes de JavaScript implementa uma propriedade stack nos objetos Error, o que te permite obter o rastreio de pilha do erro que foi lançado.