This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
| Author | skip.montanaro |
|---|---|
| Recipients | skip.montanaro |
| Date | 2008年06月11日.17:23:24 |
| SpamBayes Score | 0.005723507 |
| Marked as misclassified | No |
| Message-id | <1213205007.57.0.132667292732.issue3079@psf.upfronthosting.co.za> |
| In-reply-to |
| Content | |
|---|---|
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. The cruel irony is that inside OptionParser.parse_args it actually catches both BadOptionError and OptionValueError but suppresses them by calling self.error() within the except block... *arrgggghhh*... The correct behavior there is (in my opinion) to get rid of the try/except statement altogether and just let the exceptions propagate. Other calls to self.error() should be replaced with suitable raise statements. Skip |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2008年06月11日 17:23:28 | skip.montanaro | set | spambayes_score: 0.00572351 -> 0.005723507 recipients: + skip.montanaro |
| 2008年06月11日 17:23:27 | skip.montanaro | set | spambayes_score: 0.00572351 -> 0.00572351 messageid: <1213205007.57.0.132667292732.issue3079@psf.upfronthosting.co.za> |
| 2008年06月11日 17:23:26 | skip.montanaro | link | issue3079 messages |
| 2008年06月11日 17:23:24 | skip.montanaro | create | |