2010-09-13 508 views
13

我使用函数将一些.dat文件转换为.mat文件。我在一个循环内调用这个函数来转换一些文件。在某些情况下,我的.dat文件已损坏,并且该函数无法转换并发生错误,从而停止循环。如何在MATLAB中发生错误时继续循环?

现在我的问题是:是否有任何命令,其中当发生错误时,应该跳过循环中的当前(i)值并转到下一个增量值(在我的情况下是下一个文件)?

回答

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 

编辑:

荷银提出以下他的评论是个好主意。您可能希望发出警告,指出发生了错误和哪个文件,或者您可能甚至想要保存无法正确转换的文件列表。对于后者,你可以在开始你的循环之前首先初始化一个空单元阵列:

failedFiles = {}; %# To store a list of the files that failed to convert 

然后,您捕获异常之后,但在发出continue命令之前,添加当前文件的名称/路径被转换到列表:

... 
catch exception 
    failedFiles = [failedFiles; {'currentFile.dat'}]; 
    continue 
end 

当你的循环完成,然后你可以看一下failedFiles很容易地看到什么不正确转换。

+6

您应该或许会通知用户错误:'尝试,...,抓住我,警告(ME.identifier,ME.message),继续,结束' – Amro 2010-09-13 18:06:06