Don't raise any Exception for unexpected CLI args

* We were raising some exception if we got wrong CLI args, it's better to only
  show the error and exits with the error status code.
* Support returning to main screen with status code, which ends up in the CLI
  to sys.exit(status_code)