exponenta event banner

lasterr

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

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

Примечание

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

Синтаксис

msgstr = lasterr
[msgstr,errID] = lasterr
lasterr('new_msgstr')
lasterr('new_msgstr','new_errID')
[msgstr,errID] = lasterr('new_msgstr','new_errID')

Описание

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

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

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

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

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

Примеры

Пример 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,errID] = lasterr
errmsg =
   The angle specified must be less than 90 degrees.
errID =
   MyToolbox:angleTooLarge

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

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

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

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

| | | |

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