throwAsCaller
Lança uma exceção como se viesse da função chamadora.
Categoria: Programming > Programming Utilities
Sintaxe
throwAsCaller(ME)
Lança ME com a pilha de chamadas reduzida, de modo que o erro pareça se originar em quem chamou.
Descrição
Uma função que valida suas entradas costuma querer que o erro seja atribuído à chamada que cometeu o engano, e não a um auxiliar interno. throwAsCaller remove a função atual da pilha relatada para esse fim. O identificador e a mensagem não mudam.
Argumentos de entrada
ME- Um objeto
MException.
Exemplo
Relatando um argumento inválido a quem chamou
function r = safeSqrt(x)
if x < 0
throwAsCaller(MException('safe:neg', 'x must be nonnegative'));
end
r = sqrt(x);
end
disp(safeSqrt(16))
try
safeSqrt(-1)
catch err
disp(err.message)
end
Saída
4
x must be nonnegative
Observações
O MatLivre lança o erro normalmente, então o local relatado não é ajustado.