2017-04-05 63 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 
相關問題