逃离嵌套的try - catch语句

时间:2013-06-05 11:10:26

标签: matlab error-handling

我目前正在使用嵌套的try-catch语句调试代码。

我可以使用dbstop命令轻松处理错误,但每次查看代码并希望停止运行程序时,我必须为每个嵌套级别输入dbquit一次。< / p>

由于这非常烦人,我正在寻找一个解决方案,一旦我完成调试就真的停止调试所有程序。

以下是我如何调用代码的示例:

dbstop if error
dbstop if caught error
mytestmain

以下是函数的外观示例(子函数可能在或不在不同的.m文件中)

function mytestmain 
try
    mytestsub
catch
end

%% Definition of subfunction
function mytestsub
try
    a=b;%generate an error as b is not defined
catch
end

我尝试了什么?

  • 我尝试使用两次调用dbquit的脚本或函数,但这只会执行dbquit一次。
  • 我尝试使用dbquit('all'),但没有效果

请注意,我不想删除代码中的try-catch语句。

2 个答案:

答案 0 :(得分:2)

您可以在使用dbclear

之前致电dbquit
dbclear all; dbquit;

但请注意,这也将清除您手动设置的所有断点,因此,如果您另外使用断点,则应该使用

dbclear if error; dbclear if caught error; dbquit;

答案 1 :(得分:1)

这不是它应该如何工作的。无论您的try / catch语句嵌套的程度如何以及仍然设置了哪些断点,单个dbquit都应该让您完全脱离调试器。

你在运行旧版本的Matlab吗?在RAP9b之前版本的Matlab中有一个known bug related to dbstop if caught error听起来可能会导致这种行为。如果您使用的是旧版本,则可以升级。

无论您的版本如何,请尝试执行dbstop if all error而不是单独的dbstop if errordbstop if caught error语句,并查看行为是否发生变化。

我也猜想你可能正在“K&gt;&gt;”中运行多个功能提示并以嵌套的调试器会话结束,但您所做的dbquit('all')应该处理这种情况。

相关问题