3

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

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

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

我该如何做到这一点?

4

1 回答 1

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
于 2011-03-01T22:01:30.927 回答