From: Avi Kivity <avi@xxxxxxxxxx> Signed-off-by: Avi Kivity <avi@xxxxxxxxxx> Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> diff --git a/api/exception.cc b/api/exception.cc index 500569a..910bdff 100644 --- a/api/exception.cc +++ b/api/exception.cc @@ -18,3 +18,16 @@ const char *errno_exception::what() std::strerror(_errno), _errno); return _buf; } + +int try_main(int (*main)(int argc, char** argv), int argc, char** argv, + int ret_on_exception) +{ + try { + return main(argc, argv); + } catch (std::exception& e) { + std::fprintf(stderr, "exception: %s\n", e.what()); + } catch (...) { + std::fprintf(stderr, "unknown exception\n"); + } + return ret_on_exception; +} diff --git a/api/exception.hh b/api/exception.hh index 4672760..f78d9a1 100644 --- a/api/exception.hh +++ b/api/exception.hh @@ -13,4 +13,7 @@ private: char _buf[1000]; }; +int try_main(int (*main)(int argc, char** argv), int argc, char** argv, + int ret_on_exception = 127); + #endif -- To unsubscribe from this list: send the line "unsubscribe kvm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html