#538 prevent destructors from throwing exceptions

This commit is contained in:
Guenter Obiltschnig
2014-09-19 09:46:49 +02:00
parent c8686a727d
commit 544229302e
60 changed files with 555 additions and 131 deletions

View File

@@ -37,18 +37,25 @@ public:
~TempFileCollector()
{
for (std::set<std::string>::iterator it = _files.begin(); it != _files.end(); ++it)
try
{
try
{
File f(*it);
if (f.exists())
f.remove(true);
}
catch (Exception&)
for (std::set<std::string>::iterator it = _files.begin(); it != _files.end(); ++it)
{
try
{
File f(*it);
if (f.exists())
f.remove(true);
}
catch (Exception&)
{
}
}
}
catch (...)
{
poco_unexpected();
}
}
void registerFile(const std::string& path)
@@ -81,17 +88,24 @@ TemporaryFile::TemporaryFile(const std::string& tempDir):
TemporaryFile::~TemporaryFile()
{
if (!_keep)
try
{
try
{
if (exists())
remove(true);
}
catch (Exception&)
if (!_keep)
{
try
{
if (exists())
remove(true);
}
catch (Exception&)
{
}
}
}
catch (...)
{
poco_unexpected();
}
}