2

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

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

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

谢了,兄弟们。

4

1 回答 1

2

您可以检查 a 的有效性handlewith 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
于 2013-03-26T18:57:13.107 回答