summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 13938c10b9a..3b0de1f5437 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -3109,6 +3109,11 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
}
out << nl << "throw new Ice.UnknownUserException();";
out << eb;
+ if(!outParams.empty() || ret)
+ {
+ out << nl << "try";
+ out << sb;
+ }
for(q = outParams.begin(); q != outParams.end(); ++q)
{
writeMarshalUnmarshalCode(out, scope, q->first, fixKwd(q->second), false, iter, true);
@@ -3119,6 +3124,14 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
writeMarshalUnmarshalCode(out, scope, ret, "__ret", false, iter);
out << nl << "return __ret;";
}
+ if(!outParams.empty() || ret)
+ {
+ out << eb;
+ out << nl << "catch(Ice.LocalException __ex)";
+ out << sb;
+ out << nl << "throw new IceInternal.NonRepeatable(__ex);";
+ out << eb;
+ }
out << eb;
out << nl << "finally";
out << sb;