lasterror

Последнее сообщение об ошибке и сопутствующая информация

Совместимость

Примечание

lasterror не рекомендуется. Используйте MException вместо этого. Для получения дополнительной информации см. Вопросы совместимости.

Синтаксис

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

Описание

s = lasterror возвращает структуру s содержа информацию о новой ошибке, выпущенной MATLAB®. Возвращенная структура содержит следующие поля:

Имя поляОписание

message

Символьный массив, содержащий текст сообщения об ошибке.

identifier

Символьный массив, содержащий идентификатор для ошибки. Если последняя ошибка, выпущенная MATLAB, не имела никакого ошибочного идентификатора, то identifier поле является пустым символьным массивом.

stack

Информация о предоставляющем структуры о местоположении ошибки. Структура имеет поля fileИмя, и line, и совпадает со структурой, возвращенной dbstack функция. Если lasterror не возвращает данных стека, stack 0 1 структура, имеющая те же три поля.

Примечание

Возвращенная структура lasterror может содержать дополнительные поля в будущих версиях MATLAB.

Поля структуры возвращены в stack

Имя поляОписание

file

Имя файла, в котором появляется функция, генерирующая ошибку. Это поле является пустым символьным вектором, если нет никакого файла.

name

Имя функции, в котором произошла ошибка. Если это - первичная функция в файле, и имя функции отличается от имени файла, name установлен в имя файла.

line

Номер строки файла, в котором произошла ошибка.

Для получения дополнительной информации об ошибочных идентификаторах, смотрите MException.

s = lasterror(err) устанавливает последнюю информацию об ошибке на сообщение об ошибке и идентификатор, заданный в структуре err. Последующие вызовы lasterror возвратите эту новую информацию об ошибке. Дополнительная структура возврата s содержит информацию о предыдущей ошибке.

s = lasterror('reset') устанавливает последнюю информацию об ошибке на состояние по умолчанию. В этом состоянии, message и identifier поля возвращенной структуры являются пустыми символьными векторами и stack поле 0 1 структура.

Примеры

Пример 1

Сохраните следующий код MATLAB в файле под названием 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.
check_inputs(x)
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.')
end

Теперь запустите функцию. Поскольку эта функция требует, чтобы векторный вход, передавая скалярное значение ей обеспечил ошибку. Ошибка происходит в стандартной подпрограмме check_inputs:

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

Error in average (line 5)
check_inputs(x)

Получите эти три поля от lasterror:

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

Отобразите текст сообщения об ошибке:

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

Отобразите поля, содержащие stack информация. err.stack 2 1 структура, потому что она предоставляет информацию о провальной стандартной подпрограмме check_inputs и также внешняя, первичная функция 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

Примечание

Как правило, имя вашей первичной функции должно совпасть с именем файла, который содержит эту функцию. Если эти имена отличаются, MATLAB использует имя файла в name поле stack структура.

Пример 2

lasterror часто используется в сочетании с rethrow функция в try, catch операторы. Например,

try
   do_something
catch
   do_cleanup
   rethrow(lasterror)
end

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2007b

Смотрите также

| | | | | | |

Представлено до R2006a