我有一个带有许多图形句柄的运行脚本,我在这里和那里更新代码。 我的目标是当我以粗略的方式关闭程序(使用X按钮或Ctrl C)来正确关闭它。
我已经覆盖了默认的关闭功能,但有时在按下它或按Ctrl + C时仍然会出现“无效的对象句柄”。
我在代码中有很多句柄,应该检查每个句柄还是有另一种正确关闭图形和代码的方法? (比如'退出',但没有关闭matlab IDE)。
谢谢, 盖
答案 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