错误后尝试/捕获而不跳过行(Matlab)

时间:2018-01-26 17:00:45

标签: matlab

我正在尝试执行Try / Catch语句,但没有在发生错误的行之后跳过所有行。

为了说明,我们说我们有:

A = 1;
B = 2+C; % error will be triggered on this line
D = 5;   % next line to be executed after a potential error

错误将在第2行触发。但是,我希望错误不会终止脚本并继续使用第3行,依此类推。

显然,我们可以通过以下方式解决这个问题:

try A = 1; catch; end
try B = 2+C; catch; end
try D = 5; catch; end

但是,这需要我为所有行添加所有这些语句。由于我有一个超过500行代码的大文件,我想避免这种情况。有没有办法在开始时以某种方式定义条件尝试,在错误发生后继续进行下一行?

进一步评论

This answer提供了一个解决方案,可以将每个代码段放在一个函数中,并迭代函数句柄的单元格数组。这是一个带有匿名函数列表的示例:

fcnList = {@() disp('1'); ...
           @() disp('2'); ...
           @() error(); ...    % Third function throws an error
           @() disp('4')};

for fcnIndex = 1:numel(fcnList)
  try
    fcnList{fcnIndex}();  % Evaluate each function
  catch
    fprintf('Error with function %d.\n', fcnIndex);  % Display when an error happens
  end
end

然而,我认为在代码的每一行前面添加@()并没有任何好处,而不是简单地将它放在try(...)中;在每一行结束(后者甚至比其他答案中提出的复杂解决方案更清晰)。我真的想把它包装成那些知道它应该跳过线的东西。

0 个答案:

没有答案