diff options
Diffstat (limited to 'python/modules/IcePy/Operation.cpp')
-rw-r--r-- | python/modules/IcePy/Operation.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/python/modules/IcePy/Operation.cpp b/python/modules/IcePy/Operation.cpp index 72a5ddc12d8..ec2fa8713fd 100644 --- a/python/modules/IcePy/Operation.cpp +++ b/python/modules/IcePy/Operation.cpp @@ -1734,12 +1734,26 @@ IcePy::TypedInvocation::unmarshalException(const pair<const Ice::Byte*, const Ic } else { - PyException pye(ex); // No traceback information available. - pye.raise(); + try + { + PyException pye(ex); // No traceback information available. + pye.raise(); + } + catch(const Ice::UnknownUserException& uue) + { + return convertException(uue); + } } } - throw Ice::UnknownUserException(__FILE__, __LINE__, "unknown exception"); + // + // Getting here should be impossible: we can get here only if the + // sender has marshaled a sequence of type IDs, none of which we + // have a factory for. This means that sender and receiver disagree + // about the Slice definitions they use. + // + Ice::UnknownUserException uue(__FILE__, __LINE__, "unknown exception"); + return convertException(uue); #ifdef __SUNPRO_CC return 0; #endif |