gpt4 book ai didi

在 MATLAB 中使用 try 和 catch 语句进行调试

转载 作者:行者123 更新时间:2023-12-02 22:30:10 24 4
gpt4 key购买 nike

我在调用一堆嵌套函数的 MATLAB 文件中有一个 try/catch 语句。简单地说,try/catch 在“顶层”级别运行,迭代我调用函数的文件列表。

for i=1:length(FILELIST)
try
dosomething(FILELIST(i)
catch
disp(exception.message)
rethrow(exception)
end

我的问题是,假设 dosomething() 有很多子函数 dosomethingchild() 我如何访问它的调试工作区?我将不得不删除所有父项中的 try/catch 语句,以便访问“如果错误/警告则停止”设置为完整的调试工作区。

try/catch 使调试变得更加困难,但我想保留它,因为有时由于文件的性质......而不是代码本身,代码会在某些文件上失败。

提前致谢。

最佳答案

只需删除 try..catch。由于您只是显示并重新抛出错误,而没有实际捕获任何特定内容,因此对于由文件性质引起的错误具有鲁棒性的可行生产代码是不可行的。它的行为与没有 try..catch 时一样,因此在出错后它将停止执行。

启用 stop if error 后,它将在您的错误处理程序中停止,正如您已经注意到的那样,这是无用的。从那里不可能返回到被调用函数的工作区,因为那些工作区已经关闭(调用已经返回)。

在现实生活中,你也可以尝试 dbstop if caught error 和你的 try..catch,但在这种情况下我建议摆脱 try..catch 或至少让它捕获特定错误。您可能还希望在(特定的)错误发生时立即捕获它们;离实际发生越远,特定错误通常产生的意义就越小。

关于在 MATLAB 中使用 try 和 catch 语句进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com