2013-03-26 142 views
2

我有一個正在運行的腳本,其中包含許多圖形句柄,我在代碼中更新這裏和那裏。 我的目標是,當我用粗體關閉程序(用X按鈕或Ctrl C)正確關閉程序時。Matlab:如何關閉程序?

我已經重寫了默認的關閉函數,但是當我按下或者按下Ctrl + C時,有時候我仍然會得到「無效的對象句柄」。

我在代碼中有很多句柄,應該檢查每一個或者是否有另一種正確關閉圖形和代碼的方法? (類似'退出',但沒有關閉matlab IDE)。

謝謝, 蓋伊。

回答

2

您可以用isvalid檢查handle的有效性。你應該循環你的手柄,檢查它們的有效性,如果有效的話關閉它們;你應該也可以在那裏找到一個try...catch,這是很好的措施。例如:

function figure1_DeleteFcn(hObject, eventdata, handles) 
    errList = []; 
    for nHndl = 1:length(handles.myHandles) 
     if isvalid(handles.myHandles(nHndl)) 
      try 
       delete(handles.myHandles(nHndl)); 
      catch err 
       errList = [errList err]; 
      end 
     end 
    end 

    if length(errList) == 1 
     error([mfilename ':ErrorClosingUI'], 'Error closing UI : %s', errList.message); 
    elseif length(errList) > 1 
     % Should probably do something smarter with the error messages here 
     error([mfilename ':ErrorClosingUI'], 'Multiple errors occurred closing UI'); 
    end