Matlab:如何合法关闭程序?

Matlab:如何合法关闭程序?,matlab,function,handle,Matlab,Function,Handle,我有一个正在运行的脚本,其中包含许多图形句柄,我在代码中不时地更新这些句柄。 我的目标是,当我粗暴地(用X键或Ctrl C键)关闭程序时,正确地关闭它 我已经重写了默认的关闭函数,但有时在按下它或按下Ctrl+C时仍然会得到“无效对象句柄” 我在代码中有很多句柄,应该检查每一个句柄,还是有其他方法正确地关闭图形和代码?(类似于“退出”,但没有关闭matlab IDE) 谢谢, Guy.您可以使用isvalid检查句柄的有效性。你应该循环你的手柄,检查它们的有效性,如果有效的话关闭它们;您可能还应

我有一个正在运行的脚本,其中包含许多图形句柄,我在代码中不时地更新这些句柄。 我的目标是,当我粗暴地(用X键或Ctrl C键)关闭程序时,正确地关闭它

我已经重写了默认的关闭函数,但有时在按下它或按下Ctrl+C时仍然会得到“无效对象句柄”

我在代码中有很多句柄,应该检查每一个句柄,还是有其他方法正确地关闭图形和代码?(类似于“退出”,但没有关闭matlab IDE)

谢谢,
Guy.

您可以使用
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