mpd/src/util/PrintException.cxx
2023-03-06 14:59:48 +01:00

37 lines
772 B
C++

// SPDX-License-Identifier: BSD-2-Clause
// Copyright CM4all GmbH
// author: Max Kellermann <mk@cm4all.com>
#include "PrintException.hxx"
#include <stdio.h>
void
PrintException(const std::exception &e) noexcept
{
fprintf(stderr, "%s\n", e.what());
try {
std::rethrow_if_nested(e);
} catch (const std::exception &nested) {
PrintException(nested);
} catch (const char *s) {
fprintf(stderr, "%s\n", s);
} catch (...) {
fprintf(stderr, "Unrecognized nested exception\n");
}
}
void
PrintException(const std::exception_ptr &ep) noexcept
{
try {
std::rethrow_exception(ep);
} catch (const std::exception &e) {
PrintException(e);
} catch (const char *s) {
fprintf(stderr, "%s\n", s);
} catch (...) {
fprintf(stderr, "Unrecognized exception\n");
}
}