From d4e24265399b1e49fb0ab58a17d3d68a1a2f2d7c Mon Sep 17 00:00:00 2001 From: Alberto Soragna Date: Mon, 7 Mar 2022 22:42:47 +0000 Subject: [PATCH] fix bugprone-exception-escape in node_main.cpp.in Signed-off-by: Alberto Soragna --- rclcpp_components/src/node_main.cpp.in | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rclcpp_components/src/node_main.cpp.in b/rclcpp_components/src/node_main.cpp.in index a6045ee00a..487331b251 100644 --- a/rclcpp_components/src/node_main.cpp.in +++ b/rclcpp_components/src/node_main.cpp.in @@ -43,7 +43,16 @@ int main(int argc, char * argv[]) std::string name = clazz.c_str(); if (name.compare(class_name) == 0) { RCLCPP_DEBUG(logger, "Instantiate class %s", clazz.c_str()); - auto node_factory = loader->createInstance(clazz); + std::shared_ptr node_factory = nullptr; + try { + node_factory = loader->createInstance(clazz); + } catch (const std::exception & ex) { + RCLCPP_ERROR(logger, "Failed to load library %s", ex.what()); + return 1; + } catch (...) { + RCLCPP_ERROR(logger, "Failed to load library"); + return 1; + } auto wrapper = node_factory->create_node_instance(options); auto node = wrapper.get_node_base_interface(); node_wrappers.push_back(wrapper);