Re: Should accessors throw exception ?
On Sep 12, 11:07 pm, mathieu <mathieu.malate...@gmail.com> wrote:
I'd like to know if there is a general answer to the following
question: when making a public interface that access a
container should the function throw an exception when the
element is not found ? Otherwise I need two functions: a Find
and a Get function which put the burden on the application
programmer to always call Find before Get.
It depends on the application. I used two different solutions
in my pre-standard AssocArray (a hash table): the operator[] had
a pre-condition that the element was present, and asserted this
precondition, but there was a get function which returned a
pointer to the element, and returned a null pointer if the
element wasn't found. In other contexts, I've found the
behavior of std::map<>::operator[] to be useful as well: just
insert the missing element. On the other hand, I can't think of
a context where throwing an exception would be the desired
behavior.
The other alternative would be to return some kind of sentinel
(like std::set<>::end() )...
Just return a pointer to the element, rather than a reference,
and you have a sentinel value defined by the standard, the null
pointer.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34