我正在MATLAB(2016a)中构建一个GUI,我将编译和部署它。我想尝试做一些全局错误处理,并且我发现任何给予GUI的命令(按钮点击等)首先通过主初始化代码然后转到特定的回调函数。我的想法是在try-catch
的调用周围加gui_mainfcn
块。让我犹豫不决的是这些代码是由一些旧的警告所预示的:
% Begin initialization code - DO NOT EDIT
... initialization code here ...
% End initialization code - DO NOT EDIT
我可以通过在此初始化部分中放置try-catch
块来解决问题吗?有没有更好的方法来尝试单个GUI的全局错误处理?
答案 0 :(得分:1)
没有理由不能在GUIDE GUI的main函数中插入全局错误处理。这些警告确实可以防止人们无意中破坏GUI功能。在您的情况下,try
/ catch
实际上不会修改功能,所以您没问题。您只是想确保不删除对gui_mainfcn
的调用,catch
是一个包含所有GUI逻辑的内部函数。
除此之外,您还需要确保填充所有请求的输出参数,以便在出现错误时(对于需要输出参数的函数调用)没有错误(在gui_mainfcn
内)块)由于而被抛出。这应该很容易,但
另外,我只会将调用包裹到try
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
catch ME
% Go ahead and fill in the requested outputs with [] so we don't get an error
[varargout{1:nargout}] = deal([]);
% Do special error handling here
fprintf('Caught error: %s\n', ME.message);
end
compile 'org.immutables:gson:2.4.6'