Throw exception as if occurs within calling function
throw is recommended over
throwAsCaller because it creates the stack trace from
the location where MATLAB® calls the function.
throwAsCaller( throws an
exception as if it occurs within the calling function. The exception terminates the
currently running function and returns control to the keyboard or an enclosing
catch block. When you throw an exception from outside a
try/catch statement, MATLAB displays the error message in the Command Window.
You can access the
MException object via a
try/catch statement or the
Sometimes, it is more informative for the error to point to the location in the
calling function that results in the exception rather than pointing to the function
that actually throws the exception. You can use
simplify the error display.
Compare Behavior of
Create a function,
sayHello, in your working
function sayHello(N) checkInput(N) str = ['Hello, ' N '!']; disp(str) function checkInput(N) if ~ischar(N) ME = MException('sayHello:inputError','Input must be char.'); throw(ME) end
At the command prompt, call the function with a numeric input.
Error using sayHello>checkInput Input must be char. Error in sayHello checkInput(N)
The top of the stack refers to line 9 because this is where MATLAB throws the exception. After the initial stack frame, MATLAB displays information from the calling function.
throwAsCaller(ME) in line 9 of
sayHello.m and call the function again.
Error using sayHello Input must be char.
The top of the stack refers to line 2 because that is the location of the error in the calling function.
exception — Exception containing cause and location of error
Exception containing the cause and location of an error, specified as a
Run code in the background using MATLAB®
backgroundPool or accelerate code with Parallel Computing Toolbox™
Introduced in R2007b