我可以在GUI初始化代码中添加try-catch吗?

时间:2017-04-05 13:12:09

标签: matlab error-handling matlab-guide

我正在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的全局错误处理?

1 个答案:

答案 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'