在Matlab中,如果发生错误,我如何跳过某个for
循环索引和continue
到下一个索引?请注意,我不知道哪个for
循环索引会导致错误发生。
错误: Too many outputs requested. Most likely cause is missing [] around left hand side that has a comma separated list expansion
我们假设k = 5
时发生错误。
如何将for
循环跳转索引k = 5
和continue
设为k = 6
?
for k = 1:10
do stuff
if error occurs
skip k that causes error
go to next k
end
end
答案 0 :(得分:2)
您可以使用 try
来实现此目的!
for k = 1:10
%do stuff
try
% portion of the code where error can occur
end
end
答案 1 :(得分:1)
如果您不知道哪个k
正在使用错误:
for i=1:10
try
%do stuff;
catch
warning('some error');
end
如果你知道k
,可以采用一种简单的方法:
for k = 1:10
if k==6
else
disp(k);
end
end
如果您已经知道导致错误的k
:
for k = [1:5 7:10]
disp(k);
end
答案 2 :(得分:0)
如果你需要一个特定长度的向量,否则你会得到一个错误,有两种好方法可以处理。
1)使用try-catch。
2)进行预范围检查,例如。 if (length(data)<2), continue;
如果只有一次可以选择错误(1)或(2)。最好选择与其余代码匹配的方式。如果错误可能发生在代码中的多个位置,并且需要在所有这些中以相同的方式处理,请使用(1)。这样您就可以在同一个地方处理所有错误。
据我所知,在如何处理异常方面存在很多不同的意见(我用更通用的名称“Exception”来引用MATLAB错误)。一个C程序员可能会说稀疏地使用Exceptions,而Java程序员会更频繁地使用它们。然而,Java中没有 goto 关键字,并且C程序员可能会在很多地方使用 goto 处理“异常情况”,即使它被认为是不好的做法过多地使用转到关键字。如您所见,有很多方法可以进行错误处理。我们可以提供不同的选择,但最终它将永远是您的选择(抱歉!)。