Последнее сообщение об ошибке
Примечание
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 соответственно.
Вот функция, которая исследует 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
Задайте ошибочный идентификатор и сообщение об ошибке с 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