diff options
author | Mark Spruiell <mes@zeroc.com> | 2003-01-25 02:58:50 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2003-01-25 02:58:50 +0000 |
commit | 3d6af2bc56a33b482a938dc3e71ebfb87d2095a7 (patch) | |
tree | 565e2f0e432894d45cfbcb071a1e152122817f98 /cpp/src/slice2cpp/Gen.cpp | |
parent | operator* (diff) | |
download | ice-3d6af2bc56a33b482a938dc3e71ebfb87d2095a7.tar.bz2 ice-3d6af2bc56a33b482a938dc3e71ebfb87d2095a7.tar.xz ice-3d6af2bc56a33b482a938dc3e71ebfb87d2095a7.zip |
raise NonRepeatable when exception occurs during reply unmarshalling
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 091264cd4fa..5c6a86c7b44 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -1706,7 +1706,17 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p) } C << eb; writeAllocateCode(C, TypeStringList(), ret); - writeUnmarshalCode(C, outParams, ret); + if(!outParams.empty() || ret) + { + C << nl << "try"; + C << sb; + writeUnmarshalCode(C, outParams, ret); + C << eb; + C << nl << "catch(const ::Ice::LocalException& __ex)"; + C << sb; + C << nl << "throw ::IceInternal::NonRepeatable(__ex);"; + C << eb; + } if(ret) { C << nl << "return __ret;"; |