+ bool had_error = false;
+ bool listing_failed = false;
+
+ const auto sessions = [&listing_failed, &spec]() -> lttng::cli::session_list {
+ try {
+ return list_sessions(spec);
+ } catch (const lttng::ctl::error& ctl_exception) {
+ ERR_FMT("Failed to list sessions ({})",
+ lttng_strerror(-ctl_exception.code()));
+ listing_failed = true;
+ return {};
+ } catch (const lttng::cli::no_default_session_error& cli_exception) {
+ /*
+ * The retrieval of the default session name already logs
+ * an error when it fails. There is no value in printing
+ * anything about this exception.
+ */
+ listing_failed = true;
+ return {};
+ }
+ }();
+
+ if (!listing_failed && sessions.size() == 0 &&
+ spec.type_ == lttng::cli::session_spec::type::NAME) {
+ ERR_FMT("Session `{}` not found", spec.value);
+ return CMD_ERROR;
+ }
+
+ if (listing_failed) {
+ return CMD_FATAL;
+ }