2017-04-05 9 views
1

私は、コンパイルとデプロイメントを行うMATLAB(2016a)でGUIを構築しています。私はいくつかのグローバルなエラー処理をしたいと思うし、特定のコールバック関数に行く前にGUI(ボタンクリックなど)に与えられたコマンドが最初にメインの初期化コードを通過するということが起こる。私の考えはtry-catchブロックをgui_mainfcnへの呼び出しの周りに置くことでした。どのような私は躊躇作っていると、コードはいくつかの大きな古い警告により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ロジックを含む内部関数であるgui_mainfcnへの呼び出しを削除しないようにしたいだけです。

また、エラーが発生した場合(出力引数が必要な関数呼び出しの場合)、エラー(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 
への呼び出しをラップします

しかし十分に簡単でなければなりません

関連する問題