gpt4 book ai didi

matlab 无法捕获子函数中的错误

转载 作者:行者123 更新时间:2023-12-02 03:23:00 27 4
gpt4 key购买 nike

我试图在我的代码中实现一个错误报告系统,所以我在运行以启动程序的函数周围放置了一个 try/catch。它是一个编程式 GUI,因此大部分子功能都是按钮或其他 GUI 元素的回调。但是,无论何时在这些子函数中抛出错误,都不会被捕获。一些子功能在其他文件中定义,因为它们是其他编程 GUI 文件。

我的问题是,有没有办法捕获超过一个函数级别的错误?

例子如下:我运行 CeleST 来启动程序

function CeleST
try
% Global try-catch
CSTMainWindow()
catch exception
generateReport(exception) % bugReporter
end

CSTMainWindow 是一个编程 GUI 文件,这里是其中一个按钮:

uicontrol('parent',mainPanel,'style','pushbutton','string','1. Process videos...','position',[500 yFilters+hFilters+10 170 60],'callback',@processVideo);

但是没有捕获到 processVideo 中的错误过程视频:

function processVideo(hObject,eventdata) %#ok<INUSD>
set(mainFigure,'Visible','off');
CSTProcessVideos % Programmatic GUI File for another window
set(mainFigure,'Visible','on');
flagConsistentButton = false;
checkSequences
populateFilters
end

即使将 undefined variable 放入子函数中也会抛出错误,但它们不会被我的 try/catch 捕获。有什么建议还是我做错了什么?我真的必须在所有内容周围放置 try-catch block 吗?

最佳答案

GTSMainWindow 没有调用 processVideo。相反,该函数用作回调并稍后调用。基本上每个回调函数都必须关心它自己的错误,将 try catch 放入 processVideo 函数中,它会捕获错误。

关于matlab 无法捕获子函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970733/

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