diff --git a/src/restool.cpp b/src/restool.cpp index dfe9ae0..4aab32f 100644 --- a/src/restool.cpp +++ b/src/restool.cpp @@ -30,7 +30,11 @@ int main(int argc, char *argv[]) PrintError(GetError(ERR_CODE_UNKNOWN_COMMAND_ERROR).FormatCause("argv null")); return RESTOOL_ERROR; } - InitFaq(std::string(argv[0])); + try { + InitFaq(std::string(argv[0])); + } catch (const std::runtime_error &error) { + return RESTOOL_ERROR; + } auto &parser = CmdParser::GetInstance(); return parser.Parse(argc, argv, 1); } diff --git a/src/restool_errors.cpp b/src/restool_errors.cpp index 35d7e78..bcb572c 100644 --- a/src/restool_errors.cpp +++ b/src/restool_errors.cpp @@ -635,8 +635,8 @@ std::string ExecuteCommand(const std::string &cmd) argv[i] = nullptr; execvp(argv[0], argv); // if execvp returns, there was an error. - perror("execle failed"); - exit(EXIT_FAILURE); + perror("execvp failed"); + throw std::runtime_error("execvp failed"); } else { // parent process // close unused write end