如何在MATLAB中发生错误时继续循环?
问题描述:
我使用函数将一些.dat文件转换为.mat文件。我在一个循环内调用这个函数来转换一些文件。在某些情况下,我的.dat文件已损坏,并且该函数无法转换并发生错误,从而停止循环。如何在MATLAB中发生错误时继续循环?
现在我的问题是:是否有任何命令,其中当发生错误时,应该跳过循环中的当前(i)值并转到下一个增量值(在我的情况下是下一个文件)?
答
您可以使用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
编辑:
荷银提出以下他的评论是个好主意。您可能希望发出警告,指出发生了错误和哪个文件,或者您可能甚至想要保存无法正确转换的文件列表。对于后者,你可以在开始你的循环之前首先初始化一个空单元阵列:
failedFiles = {}; %# To store a list of the files that failed to convert
然后,您捕获异常之后,但在发出continue
命令之前,添加当前文件的名称/路径被转换到列表:
...
catch exception
failedFiles = [failedFiles; {'currentFile.dat'}];
continue
end
当你的循环完成,然后你可以看一下failedFiles
很容易地看到什么不正确转换。
您应该或许会通知用户错误:'尝试,...,抓住我,警告(ME.identifier,ME.message),继续,结束' – Amro 2010-09-13 18:06:06