From a69c3c1848ec324975faa0dd14f0e7750c46bfee Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 5 Sep 2016 11:29:10 +0200 Subject: neighbor/Glue: support C++ exceptions --- src/neighbor/Glue.cxx | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/neighbor/Glue.cxx b/src/neighbor/Glue.cxx index 3cf7518f9..3953dfb25 100644 --- a/src/neighbor/Glue.cxx +++ b/src/neighbor/Glue.cxx @@ -27,6 +27,9 @@ #include "config/ConfigError.hxx" #include "config/Block.hxx" #include "util/Error.hxx" +#include "util/RuntimeError.hxx" + +#include NeighborGlue::Explorer::~Explorer() { @@ -61,14 +64,20 @@ NeighborGlue::Init(EventLoop &loop, NeighborListener &listener, Error &error) { for (const auto *block = config_get_block(ConfigBlockOption::NEIGHBORS); block != nullptr; block = block->next) { - NeighborExplorer *explorer = - CreateNeighborExplorer(loop, listener, *block, error); - if (explorer == nullptr) { - error.FormatPrefix("Line %i: ", block->line); - return false; + try { + auto *explorer = + CreateNeighborExplorer(loop, listener, *block, + error); + if (explorer == nullptr) { + error.FormatPrefix("Line %i: ", block->line); + return false; + } + + explorers.emplace_front(explorer); + } catch (...) { + std::throw_with_nested(FormatRuntimeError("Line %i: ", + block->line)); } - - explorers.emplace_front(explorer); } return true; -- cgit v1.2.3