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.

Veja também

throw rethrow MException error