No exemplo anterior, utilizamos o comando throw para lançar um erro
explicitamente. Em alguns momentos, o tratamento da exceção não pode ser tratada
em seu respectivo bloco catch.
Nesse caso, podemos relançar um erro para um escopo, acima do atual, utilizado
o mesmo comando throw. O uso da palavra new é necessário:
Sintaxe
try
{
//código
}
catch( err: any )
{
throw err; //
}
Exemplo 4
function funcao1():void
{
throw Error("erro desconhecido em funcao1"); //local original do erro
}
function funcao2():void
{
try
{
funcao1();
}
catch(erro)
{
throw erro; //o erro não pode ser tratado aqui
}
}
function funcao3():void
{
try
{
funcao2();
}
catch(erro)
{
console.log(erro.message); //tratamento do erro
}
}
funcao3();
Saída
erro desconhecido em funcao1
Com a abordagem acima recomendada, re-lançando um erro/exceção, as informações contidas no stack serão mantidas
facilitando assim a análise do erro.