exponenta event banner

перегородочный

Последнее сообщение об ошибке

Примечание

lasterr будет удален в будущей версии. Можно получить информацию о любой ошибке, которая была сгенерирована путем ловли MException. Смотрите информацию о Получении Об Исключениях в документации Основ программирования.

Синтаксис

msgstr = lasterr
[msgstr, msgid] = lasterr
lasterr('new_msgstr')
lasterr('new_msgstr', 'new_msgid')
[msgstr, msgid] = lasterr('new_msgstr', 'new_msgid')

Описание

msgstr = lasterr возвращает последнее сообщение об ошибке, сгенерированное MATLAB.

[msgstr, msgid] = lasterr возвращает последнюю ошибку в msgstr и его идентификатор сообщения в msgid. Если ошибка не была задана с идентификатором, lasterr возвращает пустой символьный вектор для msgid. Смотрите Идентификаторы сообщений в документации Основ программирования MATLAB для получения дополнительной информации об аргументе msgid и как использовать его.

lasterr('new_msgstr') устанавливает последнее сообщение об ошибке на новый вектор символов, new_msgstr, так, чтобы последующие вызовы lasterr возвратили новое сообщение об ошибке. Можно также установить последнюю ошибку на пустой символьный вектор с lasterr('').

lasterr('new_msgstr', 'new_msgid') устанавливает последнее сообщение об ошибке и его идентификатор к new_msgstr и new_msgid, соответственно. Последующие вызовы lasterr возвращают новое сообщение об ошибке и идентификатор сообщения.

[msgstr, msgid] = lasterr('new_msgstr', 'new_msgid') возвращает последнее сообщение об ошибке и его идентификатор, также изменяя эти значения так, чтобы последующие вызовы lasterr возвратили сообщение и идентификатор, заданный new_msgstr и new_msgid соответственно.

Примеры

Пример 1

Вот функция, которая исследует вектор символов lasterr и отображает его собственное сообщение на основе ошибки, которая в последний раз произошла. Этот пример имеет дело с двумя случаями, каждый из которых является ошибкой, которая может следовать из матрицы, умножьтесь:

function matrix_multiply(A, B)
try
   A * B
catch
   errmsg = lasterr;
   if(strfind(errmsg, 'Inner matrix dimensions'))
      disp('** Wrong dimensions for matrix multiply')
   else
      if(strfind(errmsg, 'not defined for variables of class'))
         disp('** Both arguments must be double matrices')
      end
   end
end

Если вы вызываете эту функцию с матрицами, которые несовместимы для умножения матриц (например, размерность столбца A не равна размерности строки B), MATLAB фиксирует ошибку и использует lasterr, чтобы определить его источник:

A = [1  2  3; 6  7  2; 0  -1  5];
B = [9  5  6; 0  4  9];

matrix_multiply(A, B)
** Wrong dimensions for matrix multiply

Пример 2

Задайте идентификатор сообщения и сообщение об ошибке с error:

error('MyToolbox:angleTooLarge', ... 
      'The angle specified must be less than 90 degrees.');

В вашем коде обработки ошибок используйте lasterr, чтобы определить идентификатор сообщения и сообщение об ошибке для провальной операции:

[errmsg, msgid] = lasterr
errmsg =
   The angle specified must be less than 90 degrees.
msgid =
   MyToolbox:angleTooLarge

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

| | | |

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