lasterror
最后一条错误消息和相关信息
不推荐使用 lasterror
。请改用 MException
。有关详细信息,请参阅版本历史记录。
语法
s = lasterror
s = lasterror(err)
s = lasterror('reset')
说明
s = lasterror
返回结构体 s
,此结构体包含有关 MATLAB® 最近发出的错误的信息。返回的结构体包含以下字段:
字段名称 | 描述 |
---|---|
| 包含错误消息文本的字符数组。 |
| 包含错误标识符的字符数组。如果 MATLAB 发出的最后一个错误没有错误标识符,则 |
| 提供有关错误位置的信息的结构体。结构体包含字段 |
注意
lasterror
返回的结构体在以后版本的 MATLAB 中可能包含其他字段。
stack
中返回的结构体的字段为
字段名称 | 描述 |
---|---|
| 出错函数所在文件的名称。如果没有文件,则此字段为空字符向量。 |
| 发生错误的函数的名称。如果这是文件中的主函数并且函数名称与文件名不同,则将 |
| 文件中发生错误的行号。 |
有关错误标识符的详细信息,请参阅 MException
。
s = lasterror(err)
将最后一个错误的信息设置为在结构体 err
中指定的错误消息和标识符。以后调用 lasterror
时将返回该新错误信息。可选的返回结构体 s
包含有关上一个错误的信息。
s = lasterror('reset')
将最后一个错误的信息设置为默认状态。在此状态下,返回的结构体中的 message
和 identifier
字段为空字符向量,stack
字段为 0×1 结构体。
示例
示例 1
将以下 MATLAB 代码保存在名为 average.m
的文件中:
function y = average(x) % AVERAGE Mean of vector elements. % AVERAGE(X), where X is a vector, is the mean of vector elements. % Nonvector input results in an error. check_inputs(x) y = sum(x)/length(x); % The actual computation function check_inputs(x) [m,n] = size(x); if (~((m == 1) || (n == 1)) || (m == 1 && n == 1)) error('AVG:NotAVector', 'Input must be a vector.') end
现在运行函数。由于此函数需要向量输入,向其传递一个标量值可强制产生错误。错误发生在子例程 check_inputs
中:
average(200) Error using average>check_inputs (line 11) Input must be a vector. Error in average (line 5) check_inputs(x)
从 lasterror
获取以下三个字段:
err = lasterror err = message: [1x61 char] identifier: 'AVG:NotAVector' stack: [2x1 struct]
显示错误消息的文本:
msg = err.message msg = Error using average>check_inputs (line 11) Input must be a vector.
显示包含 stack
信息的字段。err.stack
是 2×1 结构体,因为它提供有关失败子例程 check_inputs
以及外部主函数 average
的信息:
st1 = err.stack(1,1) st1 = file: 'd:\matlab_test\average.m' name: 'check_inputs' line: 11 st2 = err.stack(2,1) st2 = file: 'd:\matlab_test\average.m' name: 'average' line: 5
注意
主函数的名称通常应与包含此函数的文件的文件名相同。如果它们的名称不同,MATLAB 将使用 stack
结构体的 name
字段中的文件名。
示例 2
lasterror
通常在 try, catch
语句中与 rethrow
函数结合使用。例如,
try do_something catch do_cleanup rethrow(lasterror) end
扩展功能
版本历史记录
在 R2006a 之前推出另请参阅
dbstack
| lastwarn
| rethrow
| assert
| error
| MException
| MException.last
| try, catch