我正在尝试在我的代码中实现一个错误报告系统,所以我对运行的函数进行了try / catch以启动程序。它是一个程序化的GUI,因此大多数子功能都是按钮或其他GUI元素的回调。但是,无论何时在这些子功能中抛出错误,都不会被捕获。某些子功能在其他文件中定义,因为它们是其他编程GUI文件。
我的问题是,无论如何要捕获超过一个功能级别的错误?
以下示例: 我运行CeleST来启动程序
sudo
CSTMainWindow是一个编程的GUI文件,这是一个按钮:
function CeleST
try
% Global try-catch
CSTMainWindow()
catch exception
generateReport(exception) % bugReporter
end
但是没有捕获processVideo中的错误 processVideo:
uicontrol('parent',mainPanel,'style','pushbutton','string','1. Process videos...','position',[500 yFilters+hFilters+10 170 60],'callback',@processVideo);
即使在子函数中放置未定义的变量也会引发错误但是我的try / catch没有捕获它们。任何建议或我做错了什么?我是否真的必须在所有东西周围放置try-catch块?
答案 0 :(得分:1)
GTSMainWindow没有调用processVideo。相反,该函数用作回调并稍后调用。 基本上每个回调函数都必须关心它自己的错误,将try catch放入processVideo函数中它会捕获错误。