Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在错误中运行指定的命令,而无需在Matlab中进行try / catch

我有一个Matlab脚本,其中包含几个应该都可以独立执行的单元(即,我可能需要执行一个单元才能执行另一个单元,但是在清除工作空间之前,我应该能够再次执行第二个单元而无需执行第一个)。这些单元中的代码有时会失败(当然),如果确实失败了,我想运行一个特定的命令。

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

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

我该如何完成?



回答:

如果要将代码保留为脚本,最好的解决方案是在每个单元格周围放置一个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

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:59


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.