mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-13 18:45:10 +01:00
#538 prevent destructors from throwing exceptions
This commit is contained in:
parent
5a14f72508
commit
85fd968a1e
@ -84,9 +84,16 @@ struct MySQL_API MySQLConnectorRegistrator
|
||||
|
||||
~MySQLConnectorRegistrator()
|
||||
/// Calls Poco::Data::MySQL::unregisterConnector();
|
||||
{
|
||||
try
|
||||
{
|
||||
Poco::Data::MySQL::Connector::unregisterConnector();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -95,9 +95,16 @@ struct ODBC_API ODBCConnectorRegistrator
|
||||
|
||||
~ODBCConnectorRegistrator()
|
||||
/// Calls Poco::Data::ODBC::unregisterConnector();
|
||||
{
|
||||
try
|
||||
{
|
||||
Poco::Data::ODBC::Connector::unregisterConnector();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -57,6 +57,8 @@ public:
|
||||
~Handle()
|
||||
/// Destroys the Handle.
|
||||
{
|
||||
try
|
||||
{
|
||||
#if defined(_DEBUG)
|
||||
SQLRETURN rc =
|
||||
#endif
|
||||
@ -65,6 +67,11 @@ public:
|
||||
// leak resources. So, we throw here in debug mode if things go bad.
|
||||
poco_assert_dbg (!Utility::isError(rc));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
operator const H& () const
|
||||
/// Const conversion operator into reference to native type.
|
||||
|
@ -39,6 +39,8 @@ ConnectionHandle::ConnectionHandle(EnvironmentHandle* pEnvironment):
|
||||
|
||||
|
||||
ConnectionHandle::~ConnectionHandle()
|
||||
{
|
||||
try
|
||||
{
|
||||
SQLDisconnect(_hdbc);
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc);
|
||||
@ -47,6 +49,11 @@ ConnectionHandle::~ConnectionHandle()
|
||||
|
||||
poco_assert (!Utility::isError(rc));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
@ -40,10 +40,17 @@ EnvironmentHandle::EnvironmentHandle(): _henv(SQL_NULL_HENV)
|
||||
|
||||
|
||||
EnvironmentHandle::~EnvironmentHandle()
|
||||
{
|
||||
try
|
||||
{
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv);
|
||||
poco_assert (!Utility::isError(rc));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
@ -51,9 +51,16 @@ Preparator::Preparator(const Preparator& other):
|
||||
|
||||
|
||||
Preparator::~Preparator()
|
||||
{
|
||||
try
|
||||
{
|
||||
freeMemory();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Preparator::freeMemory() const
|
||||
|
@ -69,6 +69,8 @@ SessionImpl::SessionImpl(const std::string& connect,
|
||||
|
||||
|
||||
SessionImpl::~SessionImpl()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (isTransaction() && !getFeature("autoCommit"))
|
||||
{
|
||||
@ -76,8 +78,12 @@ SessionImpl::~SessionImpl()
|
||||
catch (...) { }
|
||||
}
|
||||
|
||||
try { close(); }
|
||||
catch (...) { }
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -103,9 +103,16 @@ struct SQLite_API SQLiteConnectorRegistrator
|
||||
|
||||
~SQLiteConnectorRegistrator()
|
||||
/// Calls Poco::Data::SQLite::unregisterConnector();
|
||||
{
|
||||
try
|
||||
{
|
||||
Poco::Data::SQLite::Connector::unregisterConnector();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -44,9 +44,16 @@ Notifier::Notifier(const Session& session, const Any& value, EnabledEventType en
|
||||
|
||||
|
||||
Notifier::~Notifier()
|
||||
{
|
||||
try
|
||||
{
|
||||
disableAll();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool Notifier::enableUpdate()
|
||||
|
@ -51,9 +51,16 @@ SQLiteStatementImpl::SQLiteStatementImpl(Poco::Data::SessionImpl& rSession, sqli
|
||||
|
||||
|
||||
SQLiteStatementImpl::~SQLiteStatementImpl()
|
||||
{
|
||||
try
|
||||
{
|
||||
clear();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SQLiteStatementImpl::compileImpl()
|
||||
|
@ -56,9 +56,16 @@ SessionImpl::SessionImpl(const std::string& fileName, std::size_t loginTimeout):
|
||||
|
||||
|
||||
SessionImpl::~SessionImpl()
|
||||
{
|
||||
try
|
||||
{
|
||||
close();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
poco_unexpected();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Poco::Data::StatementImpl* SessionImpl::createStatementImpl()
|
||||
|
Loading…
Reference in New Issue
Block a user