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