Propagate sys.exit(code) up the call stack to the shell

SystemExitException is instantiated and thrown by Base::Interpreter
whenever the python interpreter executes a sys.exit(<exitCode>) call.
However, in the current implementation, the SystemExitException
effectively swallows the <exitCode> hence under this change,
SystemExitException has been extended to save the <exitCode> passed to
the sys.exit() call when it is instantiated and provides a new
getExitCode() accessor method to retrieve the <exitCode> in a
try/catch block.  MainGui.cpp was change to pass the corresponding
<exitCode> to the system exit() call so it is accessible in the shell.
This commit is contained in:
Bruce Lacey
2016-03-19 10:12:15 -07:00
committed by wmayer
parent dcb5d09581
commit 05076993d6
3 changed files with 40 additions and 3 deletions

View File

@@ -236,8 +236,8 @@ int main( int argc, char ** argv )
else
App::Application::runApplication();
}
catch (const Base::SystemExitException&) {
exit(0);
catch (const Base::SystemExitException& e) {
exit(e.getExitCode());
}
catch (const Base::Exception& e) {
e.ReportException();