[geos-devel] GEOSException is incompatible with std::exception

strk at refractions.net strk at refractions.net
Wed Apr 5 05:35:16 EDT 2006


On Tue, Apr 04, 2006 at 06:59:20PM +0200, Mateusz Å?oskot wrote:
> strk at refractions.net wrote:
> > On Tue, Apr 04, 2006 at 04:44:31PM +0200, Mateusz Ã
?oskot wrote:
> > 
> >> Honestly, I don't think al GEOS exceptions can be categorized as 
> >> runtime_exception, some are logical e.g. IllegalArgumentException. 
> >> GEOSException is a general geos exception and I think it should be 
> >> derived directly from std::exception. GEOSException could be
> >> defined similarly as those exceptions in <stdexcept> file.
> >> 
> >> What do you think?
> > 
> > That's fine with me. Anyway, I think this was previous layout.
> 
> Yes, indeed.
> But there were no what() accessor, so that's why the problem occured.
> 
> > Maybe the problem was GEOSException didn't define what() as a 'const'
> > method (thus NOT overriding the non-const version) ?
> 
> Yes, I think so.
> I've just tested it again and here is my final proposal:
> 
> 1. GEOSException derives from std::exception
> 2. GEOSException has it's own member to store the message,
> similarly to standard exception classes derived from std::exception
> 3. GEOSException overrides virtual member declared in
> std::exception::what() to return the message stored in the local buffer
> 
> Does it make sense?

I committed a patch in this direction.
Could you test current CVS with your existing tests please ?

--strk;



More information about the geos-devel mailing list