On 03/21/2012 03:33 PM, Caolán McNamara wrote:
On Wed, 2012-03-21 at 10:04 +0100, Stephan Bergmann wrote:
it would IMO be nice to nevertheless have information about functions'
exception behaviour around, in a form suitable for mechanical
verification.  (For example by disabling GCC's -fno-enforce-eh-specs
for --enable-dbgutil builds.)  But maybe that's only a hopeless pipe
dream of mine, anyway...

Aren't we already doomed in the sense that if we take any signature
like..

virtual sal_Bool SAL_CALL foo(void) throw( uno::RuntimeException )

then if that foo is implemented using various bits of boost magic or
stl, and there's surely thousands that are, then they can throw loads of
stuff, under various edge-conditions, which are unrelated to
uno::RuntimeException unless foo does a pile of catching and converting
std::exceptions into uno::RuntimeException ?

Yes, sure. It is a design error of the UNO C++ language binding that all those functions do not additionally contain certain std exceptions (bad_alloc, runtime_error, ios_base::failure, probably) in their exceptions specifications. (And one can argue that it is a design error of C++ to not offer a distinction between checked and unchecked exceptions, a la Java.) Witness the handful of places in the code (mostly written by myself, I guess) that *do* translate std::bad_alloc into a UNO RuntimeException -- an arguably misguided approach I quickly gave up on again. ;)

But that's a good argument that simply "disabling GCC's -fno-enforce-eh-specs for --enable-dbgutil builds" wouldn't quite cut it.

Stephan
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to