Main Content

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] = lasterrmsgstr 中返回最后一个错误,在 errID 中返回最后一个错误的标识符。如果没有为该错误定义标识符,lasterr 将为 errID 返回一个空字符向量。有关错误标识符的详细信息,请参阅 MException

lasterr('new_msgstr') 将最后一条错误消息设置为新字符向量 new_msgstr,这样以后调用 lasterr 时将返回新的错误消息。还可以使用 lasterr('') 将最后一个错误设置为空字符向量。

lasterr('new_msgstr','new_errID') 将最后一条错误消息及错误标识符分别设置为 new_msgstrnew_errID。以后调用 lasterr 时将返回新的错误消息和错误标识符。

[msgstr,errID] = lasterr('new_msgstr','new_errID') 返回最后一条错误消息及错误标识符,还更改这些值,这样以后调用 lasterr 时,将返回分别由 new_msgstrnew_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

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2006a 之前推出

全部折叠

R2007b: 不推荐使用 lasterr

MathWorks® 正在从 MATLAB 错误处理逐步过渡到基于 MException 类的面向对象的方案。虽然将会继续支持 lasterr,但首选使用 MException 的静态 MException.last 方法。

警告

不保证 lasterrMException.last 始终都返回相同结果。例如,MException.last 仅对未捕获的错误更新其错误状态,而 lasterr 可以对任何错误(无论捕获与否)更新其错误状态。

另请参阅

| | | |