我还没有真正理解他们在这里所说的一切:http: //www.mathworks.nl/help/matlab/ref/try.html以及所有这些带有 MException 类的东西......基本上是这样的结构
for ii = 1:number
try
do stuff
catch
end
end
我怎样才能将所有错误保留在文件/单元格/结构/...事物中,(无论如何)例如出现错误的迭代ii?
我还没有真正理解他们在这里所说的一切:http: //www.mathworks.nl/help/matlab/ref/try.html以及所有这些带有 MException 类的东西......基本上是这样的结构
for ii = 1:number
try
do stuff
catch
end
end
我怎样才能将所有错误保留在文件/单元格/结构/...事物中,(无论如何)例如出现错误的迭代ii?
我猜你可以这样做
Errors ={};
for ii = 1:number
try
%do stuff
catch err
Errors{end + 1, 1} = err;
Errors{end, 2} = ii; %note that 'end' in this line will be the same row as 'end + 1' from the line just above it
end
end
现在每个错误都将保存在第一列的新错误行中,第二列将包含与ii
该错误相对应的迭代值(即是什么)。
这是一个工作示例:
n = 1000;
errs = cell(n, 1);
for k = 1 : n
try
if rand < 0.1
% generate an error with probability 0.1
x = inv(ones(2,1));
end
catch err
errs{k} = err;
end
end
% now write errors to the file
idx_err = find(cellfun(@(c) ~isempty(c), errs));
fid = fopen('errors.txt', 'w');
for k = 1 : length(idx_err)
fprintf(fid, 'idx=%d %s\n', idx_err(k), errs{idx_err(k)}.message);
end
fclose(fid);
您还可以编写这些错误的更详细报告,例如错误堆栈。请参阅MException。