Replace exit()s with exceptions

This commit is contained in:
Alexey Rybalchenko 2020-05-17 13:58:24 +02:00
parent 4b516de81a
commit b56e32eb11
4 changed files with 30 additions and 26 deletions

View File

@ -13,7 +13,8 @@
#include <fairmq/ofi/TransportFactory.h> #include <fairmq/ofi/TransportFactory.h>
#endif #endif
#include <FairMQLogger.h> #include <FairMQLogger.h>
#include <fairmq/tools/Unique.h> #include <fairmq/Tools.h>
#include <memory> #include <memory>
#include <string> #include <string>
@ -55,6 +56,6 @@ auto FairMQTransportFactory::CreateTransportFactory(const string& type,
<< ", and \"ofi\"" << ", and \"ofi\""
#endif /* BUILD_OFI_TRANSPORT */ #endif /* BUILD_OFI_TRANSPORT */
<< ". Exiting."; << ". Exiting.";
exit(EXIT_FAILURE); throw fair::mq::TransportFactoryError(fair::mq::tools::ToString("Unavailable transport requested: ", type));
} }
} }

View File

@ -9,13 +9,15 @@
#define FAIR_MQ_SHMEM_POLLER_H_ #define FAIR_MQ_SHMEM_POLLER_H_
#include "Socket.h" #include "Socket.h"
#include <fairmq/Tools.h>
#include <FairMQChannel.h> #include <FairMQChannel.h>
#include <FairMQLogger.h> #include <FairMQLogger.h>
#include <FairMQPoller.h> #include <FairMQPoller.h>
#include <zmq.h>
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <zmq.h>
class FairMQChannel; class FairMQChannel;
@ -101,9 +103,8 @@ class Poller final : public fair::mq::Poller
} }
} }
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "at least one of the provided channel keys for poller initialization is invalid"; LOG(error) << "At least one of the provided channel keys for poller initialization is invalid." << " Out of range error: " << oor.what();
LOG(error) << "out of range error: " << oor.what() << '\n'; 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()));
exit(EXIT_FAILURE);
} }
} }
@ -120,7 +121,7 @@ class Poller final : public fair::mq::Poller
item.events = ZMQ_POLLIN; item.events = ZMQ_POLLIN;
} else { } else {
LOG(error) << "invalid poller configuration, exiting."; 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); LOG(debug) << "polling exited, reason: " << zmq_strerror(errno);
} else { } else {
LOG(error) << "polling failed, reason: " << zmq_strerror(errno); 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; return false;
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "invalid channel key: \"" << channelKey << "\""; LOG(error) << "invalid channel key: '" << channelKey << "'";
LOG(error) << "out of range error: " << oor.what() << '\n'; LOG(error) << "out of range error: " << oor.what();
exit(EXIT_FAILURE); 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; return false;
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "Invalid channel key: \"" << channelKey << "\""; LOG(error) << "invalid channel key: '" << channelKey << "'";
LOG(error) << "out of range error: " << oor.what() << '\n'; LOG(error) << "out of range error: " << oor.what();
exit(EXIT_FAILURE); throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what()));
} }
} }

View File

@ -9,6 +9,8 @@
#ifndef FAIR_MQ_ZMQ_POLLER_H #ifndef FAIR_MQ_ZMQ_POLLER_H
#define FAIR_MQ_ZMQ_POLLER_H #define FAIR_MQ_ZMQ_POLLER_H
#include <fairmq/zeromq/Socket.h>
#include <fairmq/Tools.h>
#include <FairMQChannel.h> #include <FairMQChannel.h>
#include <FairMQLogger.h> #include <FairMQLogger.h>
#include <FairMQPoller.h> #include <FairMQPoller.h>
@ -104,8 +106,8 @@ class Poller final : public fair::mq::Poller
} }
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "at least one of the provided channel keys for poller initialization is invalid"; LOG(error) << "at least one of the provided channel keys for poller initialization is invalid";
LOG(error) << "out of range error: " << oor.what() << '\n'; LOG(error) << "out of range error: " << oor.what();
throw std::out_of_range("invalid channel during poller initialization"); 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; item.events = ZMQ_POLLIN;
} else { } else {
LOG(error) << "invalid poller configuration, exiting."; 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); LOG(debug) << "polling exited, reason: " << zmq_strerror(errno);
} else { } else {
LOG(error) << "polling failed, reason: " << zmq_strerror(errno); 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; return false;
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "invalid channel key: \"" << channelKey << "\""; LOG(error) << "invalid channel key: '" << channelKey << "'";
LOG(error) << "out of range error: " << oor.what() << '\n'; LOG(error) << "out of range error: " << oor.what();
exit(EXIT_FAILURE); 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; return false;
} catch (const std::out_of_range& oor) { } catch (const std::out_of_range& oor) {
LOG(error) << "invalid channel key: \"" << channelKey << "\""; LOG(error) << "invalid channel key: '" << channelKey << "'";
LOG(error) << "out of range error: " << oor.what() << '\n'; LOG(error) << "out of range error: " << oor.what();
exit(EXIT_FAILURE); throw fair::mq::PollerError(fair::mq::tools::ToString("Invalid channel key '", channelKey, "'. Out of range error: ", oor.what()));
} }
} }

View File

@ -40,7 +40,7 @@ class Socket final : public fair::mq::Socket
{ {
if (fSocket == nullptr) { if (fSocket == nullptr) {
LOG(error) << "Failed creating socket " << fId << ", reason: " << zmq_strerror(errno); 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) { if (zmq_setsockopt(fSocket, ZMQ_IDENTITY, fId.c_str(), fId.length()) != 0) {