2013-03-26 4 views
2

У меня есть бегущий скрипт со многими графическими дескрипторами, которые я обновляю здесь и там в коде. Моя цель состоит в том, что когда я закрываю программу жестокой (с помощью кнопки X или Ctrl C), чтобы закрыть ее правильно.Matlab: Как закрыть программу?

Я переопределил функцию закрытия по умолчанию, но иногда я по-прежнему получаю «Invalid object handle» при нажатии или при нажатии Ctrl + C.

У меня есть много ручек в коде, необходимо проверить каждый из них или есть другой способ закрытия фигуры и кода правильно? (Что-то вроде «quit», но без закрывающей ID-матрицы Matlab).

Thanks, Парень.

ответ

2

Вы можете проверить срок действия handle с помощью isvalid. Вы должны зацикливаться на своих ручках, проверить их достоверность и закрыть их, если они действительны; вы должны, вероятно, также заколоть 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 
Смежные вопросы