在您的递归算法上添加一个 try catch 块,打印您认为有效的信息,然后重新抛出一个错误,该错误将静默终止您的其他回调。
随着递归函数的进行,您可以使用键盘matlab 函数来检查 matlab 工作区。您可以选择在错误消息之前添加它,这样每次在递归级别更深时都会调用它,以便您可以检查发生了什么,或者您可以在错误发生时添加它(在 上catch
) .
这只是一个草稿,可能包含错误,请根据您的需要进行调整:
try
% recursive routine
catch ext
if strcmp(ext.identifier,'MyPackage:MyRecursiveRoutine:TerminateSilently'))
% Do nothing
else
% Display useful information, you edit it to add information you think would be valid, i.e.:
disp(ext.getReport)
disp(yourVariable)
% get dbstack size, to see how many recursive functions, i.e:
theStack = dbstack;
recursiveCalls=sum(strcmp({theStack.name},'MyRecursiveFcnName'))
% You may even add the keyboard function here, so that you can inspect your workspace:
keyboard
throw(MExcept('MyPackage:MyRecursiveRoutine:TerminateSilently',''));
end
end