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