summaryrefslogtreecommitdiff
path: root/cpp/src/Freeze/SharedDbEnv.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2009-02-12 20:00:58 +0100
committerJose <jose@zeroc.com>2009-02-12 20:00:58 +0100
commit4352f504bff7ab7141322eb814f40928564f51fb (patch)
treecc942bafaf93fae3c656a43417b239826756d642 /cpp/src/Freeze/SharedDbEnv.cpp
parentBug 3220 - fix project names for VS2005/VS2008 conversion (diff)
downloadice-4352f504bff7ab7141322eb814f40928564f51fb.tar.bz2
ice-4352f504bff7ab7141322eb814f40928564f51fb.tar.xz
ice-4352f504bff7ab7141322eb814f40928564f51fb.zip
Fixed 3728 - Freeze::MapDb::~MapDb can throw
Diffstat (limited to 'cpp/src/Freeze/SharedDbEnv.cpp')
-rw-r--r--cpp/src/Freeze/SharedDbEnv.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/cpp/src/Freeze/SharedDbEnv.cpp b/cpp/src/Freeze/SharedDbEnv.cpp
index 88ca89dbedd..b163fbe3d6d 100644
--- a/cpp/src/Freeze/SharedDbEnv.cpp
+++ b/cpp/src/Freeze/SharedDbEnv.cpp
@@ -565,7 +565,25 @@ Freeze::SharedDbEnv::cleanup()
//
for(SharedDbMap::iterator p = _sharedDbMap.begin(); p != _sharedDbMap.end(); ++p)
{
- delete p->second;
+ try
+ {
+ delete p->second;
+ }
+ catch(const DatabaseException& ex)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: " << ex;
+ }
+ catch(const std::exception& ex)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: " << ex.what();
+ }
+ catch(...)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: unknown exception.";
+ }
}
//