2017-04-05 95 views
1

我正在编译和部署的MATLAB(2016a)中构建GUI。我想尝试做一些全局错误处理,并且在我看来,在进入特定的回调函数之前,给GUI的任何命令(按钮点击等)首先会经过主要的初始化代码。我的想法是在gui_mainfcn的呼叫周围放置一个try-catch块。什么是让我犹豫的是,代码是由一些大的老警告bookended:我可以在GUI初始化代码中加入try-catch吗?

% Begin initialization code - DO NOT EDIT 
... initialization code here ... 
% End initialization code - DO NOT EDIT 

我能放一个try-catch块这个初始化部分内部碰坏?有没有更好的方法来尝试单个GUI的全局错误处理?

回答

1

没有理由不能在GUIDE GUI的主要功能中插入全局错误处理。这些警告实际上是为了防止人们无意中干扰GUI功能。在你的情况下,一个try/catch是不会实际修改的功能,所以你很好。你只是想确保不要删除对gui_mainfcn的调用,这是一个包含所有GUI逻辑的内部函数。

除此之外,您还需要确保填充所有请求的输出参数,以便在发生错误的情况下(对于预期输出参数的函数调用),没有错误(在您的catch块中)是因为而抛出。这应该是很容易的,虽然

而且,我只会包住调用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 
相关问题