diff options
author | Noel Grandin <noel@peralex.com> | 2013-05-21 08:40:07 +0200 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-05-21 10:02:39 +0000 |
commit | 863d38fbfa4fb4861e476828c46410602100919e (patch) | |
tree | 19592eec69968720ae0a5c895d8ec5050d5f62e5 /tools/source | |
parent | do not second-guess help langs for installation (diff) | |
download | core-863d38fbfa4fb4861e476828c46410602100919e.tar.gz core-863d38fbfa4fb4861e476828c46410602100919e.zip |
move DBG_UNHANDLED_EXCEPTION out of line
makes it easier to set a breakpoint on it.
Plus it's getting a little big to be a macro.
Change-Id: I2827aa3618ba966fbc85a4a56e0e794a55630730
Reviewed-on: https://gerrit.libreoffice.org/3988
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'tools/source')
-rw-r--r-- | tools/source/debug/debug.cxx | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/source/debug/debug.cxx b/tools/source/debug/debug.cxx index 104353be1bd1..eec15eb70569 100644 --- a/tools/source/debug/debug.cxx +++ b/tools/source/debug/debug.cxx @@ -42,6 +42,7 @@ #include <vector> #include <osl/diagnose.h> +#include <tools/diagnose_ex.h> #ifdef DBG_UTIL @@ -1585,4 +1586,52 @@ void DbgOutf( const sal_Char*, ... ) {} #endif + +#if OSL_DEBUG_LEVEL > 0 + +void DbgUnhandledException(const css::uno::Any & caught, const char* currentFunction) +{ + OString sMessage( "caught an exception!" ); + sMessage += "\nin function:"; + sMessage += currentFunction; + sMessage += "\ntype: "; + sMessage += OUStringToOString( caught.getValueTypeName(), osl_getThreadTextEncoding() ); + ::com::sun::star::uno::Exception exception; + caught >>= exception; + if ( !exception.Message.isEmpty() ) + { + sMessage += "\nmessage: "; + sMessage += OUStringToOString( exception.Message, osl_getThreadTextEncoding() ); + } + if ( exception.Context.is() ) + { + const char* pContext = typeid( *exception.Context.get() ).name(); + sMessage += "\ncontext: "; + sMessage += pContext; + } + { + ::com::sun::star::configuration::CorruptedConfigurationException + specialized; + if ( caught >>= specialized ) + { + sMessage += "\ndetails: "; + sMessage += OUStringToOString( + specialized.Details, osl_getThreadTextEncoding() ); + } + } + { + ::com::sun::star::task::ErrorCodeIOException specialized; + if ( caught >>= specialized ) + { + sMessage += "\ndetails: "; + sMessage += OString::valueOf( specialized.ErrCode ); + } + } + sMessage += "\n"; + OSL_ENSURE( false, sMessage.getStr() ); +} + +#endif // OSL_DEBUG_LEVEL + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |