Language

The Free and Open Productivity Suite
Released: Apache OpenOffice 4.1.15

API

SDK

Tips ‘n’ Tricks

Miscellaneous


Global Functions in Namespace cppu
in Sourcefile exc_hlp.hxx


getCaughtException
::com::sun::star::uno::Any getCaughtException();

virtual abstract const volatile template static inline C-linkage
NO NO NO NO NO NO NO NO

Summary
Use this function to get the dynamic type of a caught C++-UNO exception;
completes the above function throwing exceptions generically.

Description
try
{
    ...
}
catch (::com::sun::star::uno::RuntimeException &)
{
    // you ought not handle RuntimeExceptions:
    throw;
}
catch (::com::sun::star::uno::Exception &)
{
    ::com::sun::star::uno::Any caught( ::cppu::getCaughtException() );
    ...
}

Restrictions:
- use only for caught C++-UNO exceptions (UNOIDL defined)
- only as first statement in a catch block!
- don't do a C++ rethrow (throw;) after you have called this function
- call getCaughtException() just once in your catch block!
  (function internally uses a C++ rethrow)
  
Return
          caught UNO exception
          
ATTENTION!
Caution!
          This function is limited to the same C++ compiler runtime library.
          E.g. for MSVC, this means that the catch handler code (the one
          that calls getCaughtException()) needs to use the very same
          C++ runtime library, e.g. msvcrt.dll as cppuhelper, e.g.
          cppuhelper3MSC.dll and the bridge library, e.g. msci_uno.dll.
          This is the case if all of them are compiled with the same
          compiler version.
          Background: The msci_uno.dll gets a rethrown exception out
          of the internal msvcrt.dll thread local storage (tls).
          Thus you _must_ not use this function if your code needs to run
          in newer UDK versions without being recompiled, because those
          newer UDK (-> OOo versions) potentially use newer C++ runtime
          libraries which most often become incompatible!
          
          But this function ought to be usable for most OOo internal C++-UNO
          development, because the whole OOo code base is compiled using the
          same C++ compiler (and linking against one runtime library).

throwException
void throwException(
const ::com::sun::star::uno::Any & rExc )
throw( ::com::sun::star::uno::Exception );

virtual abstract const volatile template static inline C-linkage
NO NO NO NO NO NO NO NO

Description
This function throws the exception given by rExc.  The given value has to
be of typeclass EXCEPTION and must be dervived from or of
type com.sun.star.uno.Exception.

Parameters
rExc
       exception to be thrown.

Top of Page

Apache Software Foundation

Copyright & License | Privacy | Contact Us | Donate | Thanks

Apache, OpenOffice, OpenOffice.org and the seagull logo are registered trademarks of The Apache Software Foundation. The Apache feather logo is a trademark of The Apache Software Foundation. Other names appearing on the site may be trademarks of their respective owners.