summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/BasicStream.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2012-12-26 16:57:49 -0800
committerMark Spruiell <mes@zeroc.com>2012-12-26 16:57:49 -0800
commit9d0f4c271fd3f307e3b9e72ac9117cb94aa615e8 (patch)
tree7b240cdc43de51cc33b6267fef9f443f48e727b6 /cpp/src/Ice/BasicStream.cpp
parentFixed mingw warnings and added -Werror to mingw build (diff)
downloadice-9d0f4c271fd3f307e3b9e72ac9117cb94aa615e8.tar.bz2
ice-9d0f4c271fd3f307e3b9e72ac9117cb94aa615e8.tar.xz
ice-9d0f4c271fd3f307e3b9e72ac9117cb94aa615e8.zip
more compact ID fixes
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r--cpp/src/Ice/BasicStream.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index 4d007aa665f..02b8f3046e0 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -2801,7 +2801,32 @@ IceInternal::BasicStream::EncapsDecoder::readInstance()
_typeId.clear();
if(compactIdResolver)
{
- _typeId = compactIdResolver->resolve(_compactId);
+ try
+ {
+ _typeId = compactIdResolver->resolve(_compactId);
+ }
+ catch(const LocalException&)
+ {
+ throw;
+ }
+ catch(const std::exception& ex)
+ {
+ ostringstream ostr;
+ ostr << "exception in CompactIdResolver for ID " << _compactId;
+ string msg = ostr.str();
+ string what = ex.what();
+ if(!what.empty())
+ {
+ msg += ":\n" + what;
+ }
+ throw MarshalException(__FILE__, __LINE__, msg);
+ }
+ catch(...)
+ {
+ ostringstream ostr;
+ ostr << "unknown exception in CompactIdResolver for ID " << _compactId;
+ throw MarshalException(__FILE__, __LINE__, ostr.str());
+ }
}
if(_typeId.empty())
{