mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-03-04 19:27:29 +01:00
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
115 lines
1.7 KiB
C++
115 lines
1.7 KiB
C++
//
|
|
// ErrorHandler.cpp
|
|
//
|
|
// Library: Foundation
|
|
// Package: Threading
|
|
// Module: ErrorHandler
|
|
//
|
|
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
//
|
|
|
|
|
|
#include "Poco/ErrorHandler.h"
|
|
#include "Poco/SingletonHolder.h"
|
|
|
|
|
|
namespace Poco {
|
|
|
|
|
|
ErrorHandler* ErrorHandler::_pHandler = ErrorHandler::defaultHandler();
|
|
FastMutex ErrorHandler::_mutex;
|
|
|
|
|
|
ErrorHandler::ErrorHandler()
|
|
{
|
|
}
|
|
|
|
|
|
ErrorHandler::~ErrorHandler()
|
|
{
|
|
}
|
|
|
|
|
|
void ErrorHandler::exception(const Exception& exc)
|
|
{
|
|
poco_debugger_msg(exc.what());
|
|
}
|
|
|
|
|
|
void ErrorHandler::exception(const std::exception& exc)
|
|
{
|
|
poco_debugger_msg(exc.what());
|
|
}
|
|
|
|
|
|
void ErrorHandler::exception()
|
|
{
|
|
poco_debugger_msg("unknown exception");
|
|
}
|
|
|
|
|
|
void ErrorHandler::handle(const Exception& exc)
|
|
{
|
|
FastMutex::ScopedLock lock(_mutex);
|
|
try
|
|
{
|
|
_pHandler->exception(exc);
|
|
}
|
|
catch (...)
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
void ErrorHandler::handle(const std::exception& exc)
|
|
{
|
|
FastMutex::ScopedLock lock(_mutex);
|
|
try
|
|
{
|
|
_pHandler->exception(exc);
|
|
}
|
|
catch (...)
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
void ErrorHandler::handle()
|
|
{
|
|
FastMutex::ScopedLock lock(_mutex);
|
|
try
|
|
{
|
|
_pHandler->exception();
|
|
}
|
|
catch (...)
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
ErrorHandler* ErrorHandler::set(ErrorHandler* pHandler)
|
|
{
|
|
poco_check_ptr(pHandler);
|
|
|
|
FastMutex::ScopedLock lock(_mutex);
|
|
ErrorHandler* pOld = _pHandler;
|
|
_pHandler = pHandler;
|
|
return pOld;
|
|
}
|
|
|
|
|
|
ErrorHandler* ErrorHandler::defaultHandler()
|
|
{
|
|
// NOTE: Since this is called to initialize the static _pHandler
|
|
// variable, sh has to be a local static, otherwise we run
|
|
// into static initialization order issues.
|
|
static SingletonHolder<ErrorHandler> sh;
|
|
return sh.get();
|
|
}
|
|
|
|
|
|
} // namespace Poco
|