在Matlab中没有try / catch的情况下运行错误的指定命令

时间:2011-03-01 11:21:23

标签: matlab error-handling cells

我有一个由几个单元格组成的Matlab脚本,它们都应该能够独立执行(即我可能需要执行一个单元格才能执行另一个单元格,但在我清除工作区之前我应该​​能够执行第二个单元格再次没有执行第一个)。这些单元格中的代码有时会失败(当然),如果有的话,我想运行一个特定的命令。

由于代码跨越几个独立的单元格,我不能使用try / catch块来实现这一点 - 除非我在每个单元格中放置一个try / catch块,这是我不想要的。每个单元格都很短(主要是函数调用的几行),因此在每个单元格中引入try / catch块可能会使脚本的长度加倍。

具体来说,我想在第一个单元格中打开一个日志文件(diary filename.log),该文件在任何单元格发生错误(并被记录)后自动关闭(diary off)。此设置应该至少在日志文件再次关闭之前打开,并且应该以编程方式设置(我想在打开日志文件的同一单元格中设置它)。

我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您希望将代码保留为脚本,最佳解决方案是在每个单元格周围放置一个try/catch块。

否则,您可以创建一个包围脚本的函数。函数语法允许您设置'dbstop if error',以便代码执行停止在错误上,该错误允许您检查变量并查明出错的原因。

function output = run(listOfCells,input)
%#RUN evaluates the cells listed in listOfCells

try

diary filename.log

if any(listOfCells==1)
%# evaulate cell 1

end

if any(listOfCells==2)
%# evaluate cell 2

end

...

catch
%# close the diary in case of error
diary off
end %# try