我有一个运行脚本,其中包含许多图形句柄,我在代码中到处更新。我的目标是,当我粗暴地关闭程序时(使用 X 按钮或 Ctrl C)正确关闭它。
我已经覆盖了默认的关闭功能,但是有时在按下它或按下 Ctrl+C 时我仍然会得到“无效的对象句柄”。
我在代码中有很多句柄,应该检查每个句柄还是有另一种正确关闭图形和代码的方法?(类似于“退出”但没有关闭 matlab IDE)。
谢了,兄弟们。
您可以检查 a 的有效性handle
with 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