diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Exception.cpp | 19 | ||||
-rwxr-xr-x | cpp/src/slice2cpp/Gen.cpp | 5 |
2 files changed, 20 insertions, 4 deletions
diff --git a/cpp/src/Ice/Exception.cpp b/cpp/src/Ice/Exception.cpp index 84a78413c15..2510db8cffa 100644 --- a/cpp/src/Ice/Exception.cpp +++ b/cpp/src/Ice/Exception.cpp @@ -18,6 +18,25 @@ using namespace std; using namespace Ice; using namespace IceInternal; +namespace IceInternal +{ + +namespace Ex +{ + +void +throwUOE(const string& expectedType, const string& actualType) +{ + throw Ice::UnexpectedObjectException(__FILE__, __LINE__, + "expected element of type `" + expectedType + "' but received '" + actualType, + actualType, expectedType); +} + +} + +} + + bool Ice::UserException::__usesClasses() const { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index b68b987de22..c1dbbee6d2b 100755 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -3808,10 +3808,7 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) C << nl << "*p = " << scope << name << "Ptr::dynamicCast(v);"; C << nl << "if(v && !*p)"; C << sb; - C << nl << "::Ice::UnexpectedObjectException e(__FILE__, __LINE__);"; - C << nl << "e.type = v->ice_id();"; - C << nl << "e.expectedType = " << scope << fixKwd(name) << "::ice_staticId();"; - C << nl << "throw e;"; + C << nl << "IceInternal::Ex::throwUOE(" << scope << name << "::ice_staticId(), v->ice_id());"; C << eb; C << eb; |