From 3a51daeace695ead38cfd82b3a0f1e6f25a32e0f Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Thu, 24 May 2018 15:47:30 +0200 Subject: Improve re-throwing of UNO exceptions (*) if we are already throwing a Wrapped*Exception, get the exception using cppu::getCaughtexception. (*) when catching and then immediately throwing UNO exceptions, use cppu::getCaughtException to prevent exception slicing (*) if we are going to catch an exception and then immediately throw a RuntimeException, rather throw a WrappedTargetRuntimeException and preserve the original exception information. Change-Id: Ia7a501a50ae0e6f4d05186333c8517fdcb17d558 Reviewed-on: https://gerrit.libreoffice.org/54692 Tested-by: Jenkins Reviewed-by: Noel Grandin --- uui/source/interactionhandler.cxx | 10 ++++++++-- uui/source/requeststringresolver.cxx | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'uui/source') diff --git a/uui/source/interactionhandler.cxx b/uui/source/interactionhandler.cxx index 417a2e09fbbb..850eb59b0106 100644 --- a/uui/source/interactionhandler.cxx +++ b/uui/source/interactionhandler.cxx @@ -22,12 +22,14 @@ #include #include +#include #include #include #include #include "iahndl.hxx" #include +#include #include #include @@ -139,7 +141,9 @@ UUIInteractionHandler::handle( } catch (uno::RuntimeException const & ex) { - throw uno::RuntimeException(ex.Message, *this); + css::uno::Any anyEx = cppu::getCaughtException(); + throw css::lang::WrappedTargetRuntimeException( ex.Message, + *this, anyEx ); } } @@ -152,7 +156,9 @@ sal_Bool SAL_CALL UUIInteractionHandler::handleInteractionRequest( } catch (uno::RuntimeException const & ex) { - throw uno::RuntimeException( ex.Message, *this ); + css::uno::Any anyEx = cppu::getCaughtException(); + throw css::lang::WrappedTargetRuntimeException( ex.Message, + *this, anyEx ); } } diff --git a/uui/source/requeststringresolver.cxx b/uui/source/requeststringresolver.cxx index 7fddd59a1270..98a4fdb23983 100644 --- a/uui/source/requeststringresolver.cxx +++ b/uui/source/requeststringresolver.cxx @@ -19,6 +19,8 @@ #include "requeststringresolver.hxx" #include "iahndl.hxx" +#include +#include #include using namespace css; @@ -65,7 +67,9 @@ UUIInteractionRequestStringResolver::getStringFromInformationalRequest( } catch (uno::RuntimeException const & ex) { - throw uno::RuntimeException(ex.Message, *this); + css::uno::Any anyEx = cppu::getCaughtException(); + throw css::lang::WrappedTargetRuntimeException( ex.Message, + *this, anyEx ); } } -- cgit