我想知道在命令窗口中输入几行或让脚本执行它们之间有什么区别。
在问题中逃离嵌套的 try - catch 语句我有一个示例功能。我已将选定的代码放入脚本中,然后叫它,但是这样它就无法正常工作。另一方面,当我选择行并按 f9,它按预期工作。
这些行是:
dbclear all
dbquit
dbstop if caught error
我这样调用示例函数:
dbstop if caught error
mytestmain
示例函数是:
function mytestmain
try
mytestsub
catch
end
% Definition of subfunction, may or may not be in the same .m file
function mytestsub
try
a=b; %Intentionally generate an error as b is not defined
catch
end
我认为这与MATLAB有关即时 (JIT) 编译器,它在运行函数之前对其进行编译。
看来它编译函数的方式不同,如果dbstop
是否设置(参见here以供参考)。就目前情况而言,MATLAB 无法在运行时重新编译函数(只需尝试在运行期间保存更改的函数)dbstop
,您将收到一条消息通知您)。因为您可以在执行期间添加和删除断点dbstop
我认为您也可以通过编程方式执行此操作,但如果在“编译时”未打开调试,则应该不可能“打开”调试
所以在你的情况下:
- Using
F9
它只是粘贴和解析,就像您手动输入一样。所以首先dbstop
被设定,那么mytestmain
被编译并执行。
- 作为脚本运行将首先编译脚本并
mytestmain
然后执行它 - 所以dbstop
将在编译后设置,因此不会生效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)