我使用它的句柄操作绘图上的数据:
x = 1:10; y = sin(x); h1 = line(x,y);
但是,如果在脚本实际终止之前图形被关闭,则执行此类操作会返回错误 .
>>set(h1,'Color','green') % line is green ??? Error using ==> set Invalid handle object.
在使用它进行任何操作之前,有没有办法检查 h1 是否是有效的句柄?
h1
您可以使用ishandle函数首先检查图形句柄是否有效:
if ishandle(h1) set(h1, 'Color', 'green'); end
UPDATE:
对于较新版本的MATLAB,句柄对象是实际对象,而不仅仅是数值 . 更好的选择是使用isvalid方法处理句柄对象:
if isvalid(h1) set(h1, 'Color', 'green'); end
请注意,ishandle的缺点在于它还接受常见的数值,如0(=桌面句柄)和1(默认情况下是第一个打开的数字),它们通常也是有效的句柄,尽管可能不是预期的句柄 . 如果您尝试设置不存在的属性,则仍会看到错误 .
要处理此类情况,只需将代码放在异常处理块中:
try set(myHandle,propName,propValue); catch % do something useful... (recreate the GUI?) end
2 回答
您可以使用ishandle函数首先检查图形句柄是否有效:
UPDATE:
对于较新版本的MATLAB,句柄对象是实际对象,而不仅仅是数值 . 更好的选择是使用isvalid方法处理句柄对象:
请注意,ishandle的缺点在于它还接受常见的数值,如0(=桌面句柄)和1(默认情况下是第一个打开的数字),它们通常也是有效的句柄,尽管可能不是预期的句柄 . 如果您尝试设置不存在的属性,则仍会看到错误 .
要处理此类情况,只需将代码放在异常处理块中: