在MATLAB中发生错误时如何继续循环?

use*_*468 13 matlab loops

我正在使用函数将一些.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以轻松查看未正确转换的内容.

  • 您应该通知用户错误:`try,...,catch ME,warning(ME.identifier,ME.message),继续,结束 (6认同)