Issue 3084: sys.exit() called from optparse - bad, bad, bad (original) (raw)

This seems like a bug in optparse.OptionParser:

def exit(self, status=0, msg=None):
    if msg:
        sys.stderr.write(msg)
    sys.exit(status)

def error(self, msg):
    """error(msg : string)

    Print a usage message incorporating 'msg' to stderr and exit.
    If you override this in a subclass, it should not return -- it
    should either exit or raise an exception.
    """
    self.print_usage(sys.stderr)
    self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))

By default I think it should raise an exception when it encounters an error, not exit. Programmers shouldn't be forced to subclass code in the standard library to get recommended practice.

If you feel this behavior can't be changed in 2.6 it should at least be corrected in 3.0.

Skip