MATLAB: Custom error messages with Class Object

classcustomerror handlingerror messagesMATLABoop

Hello everyone,
I have a dynamic properties class I am creating to hold some experimental data. This code will be used by other users so I want to make any error messages associated with it more helpful. When you try to address a property not in the 'properties' list you get an error similar to below:
ex.Test = 1;
The error message I get reads:
"Unrecognized property 'Test' for class 'experimentStructureClass'."
I would like to modify the error message to that it directs people to used the ex.addprop() function to add a property.
Does anyone know how to access the error messages that arise from this?
Thanks a lot,
Michael

Best Answer

Have a look at subsref and subsasgn.
This way you can access the error message before it is thrown. A crude example:
classdef Example
properties (SetAccess = private)
Prop1 = rand
end
methods
function varargout = subsref(obj,s)
try
[varargout{1:nargout}] = builtin('subsref',obj,s);
catch ME
error([ME.message ' Use setProp().']);
end
end
function obj = subsasgn(obj,s,varargin)
try
obj = builtin('subsasgn',obj,s,varargin{:});
catch ME
error([ME.message ' Use setProp().']);
end
end
end
end
You'd probably want to do a little more work determining what error was thrown before deciding to throw your custom error instead.