我正在使用函数将一些.dat文件转换为.mat文件。我在循环中调用此函数来转换大量文件。在某些情况下,我的.dat文件已损坏且函数无法转换,并且发生错误,停止循环。
现在我的问题是:是否有任何命令,其中当错误发生时,它应该跳过循环中的当前(i)值并转到下一个增量值(在我的情况下是下一个文件)?
答案 0 :(得分:20)
您可以使用TRY/CATCH语句和CONTINUE来执行此操作。将以下内容放在循环中:
try %# Attempt to perform some computation
%# The operation you are trying to perform goes here
catch exception %# Catch the exception
continue %# Pass control to the next loop iteration
end
修改强>
Amro在下面的评论中提出了一个好主意。您可能希望发出警告,指出发生了错误以及哪个文件,或者您甚至可能希望保存无法正确转换的文件列表。要执行后者,您可以在开始循环之前首先初始化一个空单元格数组:
failedFiles = {}; %# To store a list of the files that failed to convert
然后,在捕获异常之后但在发出continue
命令之前,将当前正在转换的文件的名称/路径添加到列表中:
...
catch exception
failedFiles = [failedFiles; {'currentFile.dat'}];
continue
end
完成循环后,您可以查看failedFiles
以轻松查看未正确转换的内容。