2

我还没有真正理解他们在这里所说的一切:http: //www.mathworks.nl/help/matlab/ref/try.html以及所有这些带有 MException 类的东西......基本上是这样的结构

for ii = 1:number
    try
        do stuff
    catch
    end
end

我怎样才能将所有错误保留在文件/单元格/结构/...事物中,(无论如何)例如出现错误的迭代ii

4

2 回答 2

3

我猜你可以这样做

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该错误相对应的迭代值(即是什么)。

于 2013-07-30T14:57:23.050 回答
1

这是一个工作示例:

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

于 2013-07-30T15:30:54.853 回答