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

Mateusz Łoskot mateusz at loskot.net
Tue Apr 4 12:59:20 EDT 2006


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?

Cheers
-- 
Mateusz Łoskot
http://mateusz.loskot.net



More information about the geos-devel mailing list