MATLAB老版本用LASTERROR函数,返回最后一条错误信息(不推荐,新版本不再使用此函数);
MATLAB新版本用MException class获取报错信息。
对于MException class,可以使用try-catch-end代码模块输出报错信息并保存到txt文件:
try
main函数
catch ME
% open file
fiderror = fopen('logFile.txt','a+');
% write the error to file
fprintf(fiderror,'%s\n',ME.message);
% 输出所有ME.stack堆积的报错内容。
% ME.stack(e).name为出现错误的文件名
% ME.stack(e).line为出现错误的位置(第几行)
for e=1:length(ME.stack)
fprintf(fiderror,'%s at %i\n', ME.stack(e).name, ME.stack(e).line);
end
% close file
fclose(fiderror);
end
返回的结构体ME示例为:
ME =
MException (具有属性):
identifier: 'MATLAB:badsubscript'
message: '索引超出矩阵维度。'
cause: {}
stack: [1×1 struct]
ME.message内容为错误信息:
>>ME.message
ans =
索引超出矩阵维度。
ME.stack对象的属性有:
>> ME.stack
ans =
包含以下字段的 struct:
file: 'C:\Users\main.m'
name: 'main'
line: 196
参考:
https://stackoverflow.com/questions/1918500/save-output-error-messages-to-file-in-matlab
在MATLAB中,老版本通过LASTERROR函数获取错误信息,但新版本推荐使用MException class。利用try-catch-end结构,可以捕获并保存MException的message属性到txt文件。MException的stack对象包含详细错误堆栈信息。

5862

被折叠的 条评论
为什么被折叠?



