Matlab:如何合法地关闭程序?

时间:2013-03-26 18:42:11

标签: matlab function handle

我有一个带有许多图形句柄的运行脚本,我在这里和那里更新代码。 我的目标是当我以粗略的方式关闭程序(使用X按钮或Ctrl C)来正确关闭它。

我已经覆盖了默认的关闭功能,但有时在按下它或按Ctrl + C时仍然会出现“无效的对象句柄”。

我在代码中有很多句柄,应该检查每个句柄还是有另一种正确关闭图形和代码的方法? (比如'退出',但没有关闭matlab IDE)。

谢谢, 盖

1 个答案:

答案 0 :(得分: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