MATLAB: General Handle Removal

better waycleardeletehandleisvalid

I am looking for a better way to close out/clean up handle references.
Specifically: 1) 'Clear' removes the variable holding the handle ref, but doesn't clean it up. 2) 'Delete' cleans up the reference, but doesn't clear the variable. 3) If I delete an invalid handle, I get ugly warnings
Therefore I have been doing the following:
if isvalid(handlex)
delete(handlex)
end
clear handlex
It seems like there must be a better way to do this (or even a single command). Can anyone provide insight on a better way to do this (especially in larger programs with many independent handles) or help me understand why matlab doesn't have a better way?
thanks, Sean

Best Answer

You are correct about the sequence.
Handles are not objects: they are references to objects. Many different references can exist to the same object.
Suppose you are in a meeting, and while you are listening, you doodle "I want my lunch" on a piece of paper. That piece of paper now has a reference to your lunch. If you throw out the piece of paper, you do not want your lunch to be automatically thrown out as well!
If there was a combined operation, you can be sure that many people would not understand and would misuse it, much like the many many postings we see that use "clear all" without understanding just how much "all" includes.