我正在使用函数将一些.dat文件转换为.mat文件.我在循环中调用此函数来转换大量文件.在某些情况下,我的.dat文件已损坏且函数无法转换并发生错误,从而停止循环.
现在我的问题是:是否有任何命令,其中当错误发生时,它应该跳过循环中的当前(i)值并转到下一个增量值(在我的情况下是下一个文件)?
gno*_*ice 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
Run Code Online (Sandbox Code Playgroud)
编辑:
Amro在下面的评论中提出了一个好主意.您可能希望发出警告,指出发生了错误以及哪个文件,或者您甚至可能希望保存无法正确转换的文件列表.要执行后者,您可以在开始循环之前首先初始化一个空单元格数组:
failedFiles = {}; %# To store a list of the files that failed to convert
Run Code Online (Sandbox Code Playgroud)
然后,在捕获异常之后但在发出continue命令之前,将要转换的当前文件的名称/路径添加到列表中:
...
catch exception
failedFiles = [failedFiles; {'currentFile.dat'}];
continue
end
Run Code Online (Sandbox Code Playgroud)
循环完成后,您可以查看failedFiles以轻松查看未正确转换的内容.