MATLAB输出报错信息到文件

在MATLAB中,老版本通过LASTERROR函数获取错误信息,但新版本推荐使用MException class。利用try-catch-end结构,可以捕获并保存MException的message属性到txt文件。MException的stack对象包含详细错误堆栈信息。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值