From b56e32eb1115b4d7134547a7cd199cafc6c172ea Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Sun, 17 May 2020 13:58:24 +0200 Subject: [PATCH] Replace exit()s with exceptions --- fairmq/FairMQTransportFactory.cxx | 5 +++-- fairmq/shmem/Poller.h | 27 ++++++++++++++------------- fairmq/zeromq/Poller.h | 22 ++++++++++++---------- fairmq/zeromq/Socket.h | 2 +- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/fairmq/FairMQTransportFactory.cxx b/fairmq/FairMQTransportFactory.cxx index 9c5b4dc2..b8bdfa7c 100644 --- a/fairmq/FairMQTransportFactory.cxx +++ b/fairmq/FairMQTransportFactory.cxx @@ -13,7 +13,8 @@ #include #endif #include -#include +#include + #include #include @@ -55,6 +56,6 @@ auto FairMQTransportFactory::CreateTransportFactory(const string& type, << ", and \"ofi\"" #endif /* BUILD_OFI_TRANSPORT */ << ". Exiting."; - exit(EXIT_FAILURE); + throw fair::mq::TransportFactoryError(fair::mq::tools::ToString("Unavailable transport requested: ", type)); } } diff --git a/fairmq/shmem/Poller.h b/fairmq/shmem/Poller.h index 016495b0..9c7925dc 100644 --- a/fairmq/shmem/Poller.h +++ b/fairmq/shmem/Poller.h @@ -9,13 +9,15 @@ #define FAIR_MQ_SHMEM_POLLER_H_ #include "Socket.h" - +#include #include #include #include + +#include + #include #include -#include class FairMQChannel; @@ -101,9 +103,8 @@ class Poller final : public fair::mq::Poller } } } catch (const std::out_of_range& oor) { - LOG(error) << "at least one of the provided channel keys for poller initialization is invalid"; - LOG(error) << "out of range error: " << oor.what() << '\n'; - exit(EXIT_FAILURE); + LOG(error) << "At least one of the provided channel keys for poller initialization is invalid." << " Out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("At least one of the provided channel keys for poller initialization is invalid. ", "Out of range error: ", oor.what())); } } @@ -120,7 +121,7 @@ class Poller final : public fair::mq::Poller item.events = ZMQ_POLLIN; } else { LOG(error) << "invalid poller configuration, exiting."; - exit(EXIT_FAILURE); + throw fair::mq::PollerError("Invalid poller configuration, exiting."); } } @@ -131,7 +132,7 @@ class Poller final : public fair::mq::Poller LOG(debug) << "polling exited, reason: " << zmq_strerror(errno); } else { LOG(error) << "polling failed, reason: " << zmq_strerror(errno); - throw std::runtime_error("polling failed"); + throw fair::mq::PollerError(fair::mq::tools::ToString("Polling failed, reason: ", zmq_strerror(errno))); } } } @@ -163,9 +164,9 @@ class Poller final : public fair::mq::Poller return false; } catch (const std::out_of_range& oor) { - LOG(error) << "invalid channel key: \"" << channelKey << "\""; - LOG(error) << "out of range error: " << oor.what() << '\n'; - exit(EXIT_FAILURE); + LOG(error) << "invalid channel key: '" << channelKey << "'"; + LOG(error) << "out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what())); } } @@ -178,9 +179,9 @@ class Poller final : public fair::mq::Poller return false; } catch (const std::out_of_range& oor) { - LOG(error) << "Invalid channel key: \"" << channelKey << "\""; - LOG(error) << "out of range error: " << oor.what() << '\n'; - exit(EXIT_FAILURE); + LOG(error) << "invalid channel key: '" << channelKey << "'"; + LOG(error) << "out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what())); } } diff --git a/fairmq/zeromq/Poller.h b/fairmq/zeromq/Poller.h index 566208f2..e1f41227 100644 --- a/fairmq/zeromq/Poller.h +++ b/fairmq/zeromq/Poller.h @@ -9,6 +9,8 @@ #ifndef FAIR_MQ_ZMQ_POLLER_H #define FAIR_MQ_ZMQ_POLLER_H +#include +#include #include #include #include @@ -104,8 +106,8 @@ class Poller final : public fair::mq::Poller } } catch (const std::out_of_range& oor) { LOG(error) << "at least one of the provided channel keys for poller initialization is invalid"; - LOG(error) << "out of range error: " << oor.what() << '\n'; - throw std::out_of_range("invalid channel during poller initialization"); + LOG(error) << "out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("At least one of the provided channel keys for poller initialization is invalid. ", "Out of range error: ", oor.what())); } } @@ -122,7 +124,7 @@ class Poller final : public fair::mq::Poller item.events = ZMQ_POLLIN; } else { LOG(error) << "invalid poller configuration, exiting."; - exit(EXIT_FAILURE); + throw fair::mq::PollerError("Invalid poller configuration, exiting."); } } @@ -133,7 +135,7 @@ class Poller final : public fair::mq::Poller LOG(debug) << "polling exited, reason: " << zmq_strerror(errno); } else { LOG(error) << "polling failed, reason: " << zmq_strerror(errno); - throw std::runtime_error("polling failed"); + throw fair::mq::PollerError(fair::mq::tools::ToString("Polling failed, reason: ", zmq_strerror(errno))); } } } @@ -165,9 +167,9 @@ class Poller final : public fair::mq::Poller return false; } catch (const std::out_of_range& oor) { - LOG(error) << "invalid channel key: \"" << channelKey << "\""; - LOG(error) << "out of range error: " << oor.what() << '\n'; - exit(EXIT_FAILURE); + LOG(error) << "invalid channel key: '" << channelKey << "'"; + LOG(error) << "out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what())); } } @@ -180,9 +182,9 @@ class Poller final : public fair::mq::Poller return false; } catch (const std::out_of_range& oor) { - LOG(error) << "invalid channel key: \"" << channelKey << "\""; - LOG(error) << "out of range error: " << oor.what() << '\n'; - exit(EXIT_FAILURE); + LOG(error) << "invalid channel key: '" << channelKey << "'"; + LOG(error) << "out of range error: " << oor.what(); + throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what())); } } diff --git a/fairmq/zeromq/Socket.h b/fairmq/zeromq/Socket.h index 41069bb5..ecd129f0 100644 --- a/fairmq/zeromq/Socket.h +++ b/fairmq/zeromq/Socket.h @@ -40,7 +40,7 @@ class Socket final : public fair::mq::Socket { if (fSocket == nullptr) { LOG(error) << "Failed creating socket " << fId << ", reason: " << zmq_strerror(errno); - exit(EXIT_FAILURE); + throw SocketError(tools::ToString("Unavailable transport requested: ", type)); } if (zmq_setsockopt(fSocket, ZMQ_IDENTITY, fId.c_str(), fId.length()) != 0) {