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