Main Content


Last error message and related information



lasterror is not recommended. Use MException instead. For more information, see Compatibility Considerations.


s = lasterror
s = lasterror(err)
s = lasterror('reset')


s = lasterror returns a structure s containing information about the most recent error issued by MATLAB®. The returned structure contains the following fields:



Character array containing the text of the error message.


Character array containing the identifier for the error. If the last error issued by MATLAB had no error identifier, then the identifier field is an empty character array.


Structure providing information on the location of the error. The structure has fields file, name, and line, and is the same as the structure returned by the dbstack function. If lasterror returns no stack information, stack is a 0-by-1 structure having the same three fields.


The returned structure by lasterror might contain additional fields in future versions of MATLAB.

The fields of the structure returned in stack are



Name of the file in which the function generating the error appears. This field is the empty character vector if there is no file.


Name of the function in which the error occurred. If this is the primary function in the file, and the function name differs from the file name, name is set to the file name.


Line number of the file at which the error occurred.

For more information about error identifiers, see MException.

s = lasterror(err) sets the last error information to the error message and identifier specified in the structure err. Subsequent invocations of lasterror return this new error information. The optional return structure s contains information about the previous error.

s = lasterror('reset') sets the last error information to the default state. In this state, the message and identifier fields of the returned structure are empty character vectors, and the stack field is a 0-by-1 structure.


Example 1

Save the following MATLAB code in a file called average.m:

function y = average(x)
% AVERAGE Mean of vector elements.
% AVERAGE(X), where X is a vector, is the mean of vector elements.
% Nonvector input results in an error.
y = sum(x)/length(x);      % The actual computation

function check_inputs(x)
[m,n] = size(x);
if (~((m == 1) || (n == 1)) || (m == 1 && n == 1))
    error('AVG:NotAVector', 'Input must be a vector.')

Now run the function. Because this function requires vector input, passing a scalar value to it forces an error. The error occurs in subroutine check_inputs:

Error using average>check_inputs (line 11)
Input must be a vector.

Error in average (line 5)

Get the three fields from lasterror:

err = lasterror
err = 
       message: [1x61 char]
    identifier: 'AVG:NotAVector'
         stack: [2x1 struct]

Display the text of the error message:

msg = err.message
msg =
    Error using average>check_inputs (line 11)
    Input must be a vector.

Display the fields containing the stack information. err.stack is a 2-by-1 structure because it provides information on the failing subroutine check_inputs and also the outer, primary function average:

st1 = err.stack(1,1)
st1 = 
    file: 'd:\matlab_test\average.m'
    name: 'check_inputs'
    line: 11

st2 = err.stack(2,1)
st2 = 
    file: 'd:\matlab_test\average.m'
    name: 'average'
    line: 5


As a rule, the name of your primary function should be the same as the name of the file that contains that function. If these names differ, MATLAB uses the file name in the name field of the stack structure.

Example 2

lasterror is often used in conjunction with the rethrow function in try, catch statements. For example,


Compatibility Considerations

expand all

Not recommended starting in R2007b

Introduced before R2006a