#pragma once #include #include #include #include namespace Poco { class Logger; } namespace DB { using Poco::SharedPtr; typedef SharedPtr ExceptionPtr; typedef std::vector Exceptions; void throwFromErrno(const std::string & s, int code = 0, int the_errno = errno); /** Для использования в блоке catch (...). * Преобразует Exception, Poco::Exception, std::exception или неизвестный exception в ExceptionPtr. */ ExceptionPtr cloneCurrentException(); /** Попробовать записать исключение в лог (и забыть про него). * Можно использовать в деструкторах в блоке catch (...). */ void tryLogCurrentException(const char * log_name); void tryLogCurrentException(Poco::Logger * logger); void rethrowFirstException(Exceptions & exceptions); }