while (cmd->name != nullptr) {
/* Find command */
if (strcmp(argv[0], cmd->name) == 0) {
- ret = cmd->func(argc, (const char **) argv);
+ try {
+ ret = cmd->func(argc, (const char **) argv);
+ } catch (const std::exception& e) {
+ ERR_FMT("{}", e.what());
+ ret = CMD_ERROR;
+ }
+
goto end;
}
i++;
/*
* main
*/
-int main(int argc, char *argv[])
+static int _main(int argc, char *argv[])
{
int ret;
return 0;
}
+
+int main(int argc, char **argv)
+{
+ try {
+ return _main(argc, argv);
+ } catch (const std::exception& e) {
+ ERR_FMT("Unhandled exception caught by client: %s", e.what());
+ abort();
+ }
+}