From: W. Trevor King Date: Fri, 10 Jul 2009 18:11:23 +0000 (-0400) Subject: Simplified error handling in ./be X-Git-Tag: 1.0.0~64^2~18^2~2 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=0f09cef7c497ea826df526d2d3a5b018279c4d2f;p=be.git Simplified error handling in ./be Removed superfluous nesting in ./be's error catching. Also replaced KeyErrors due to unknown commands with the more specific cmdutil.UnknownCommand, since all sorts of programming errors can raise KeyErrors. Untested, since my working tree is a mess at the moment, but what could go wrong? ;) --- diff --git a/be b/be index 2023daa..b68a414 100755 --- a/be +++ b/be @@ -35,21 +35,21 @@ elif sys.argv[1] == '--version': print _version.version_info["revision_id"] else: try: - try: - sys.exit(cmdutil.execute(sys.argv[1], sys.argv[2:])) - except KeyError, e: - raise cmdutil.UserError("Unknown command \"%s\"" % e.args[0]) - except cmdutil.GetHelp: - print cmdutil.help(sys.argv[1]) - sys.exit(0) - except cmdutil.GetCompletions, e: - print '\n'.join(e.completions) - sys.exit(0) - except cmdutil.UsageError, e: - print "Invalid usage:", e - print "\nArgs:", sys.argv[1:] - print cmdutil.help(sys.argv[1]) - sys.exit(1) + sys.exit(cmdutil.execute(sys.argv[1], sys.argv[2:])) + except cmdutil.GetHelp: + print cmdutil.help(sys.argv[1]) + sys.exit(0) + except cmdutil.GetCompletions, e: + print '\n'.join(e.completions) + sys.exit(0) + except cmdutil.UnknownCommand, e: + print e + sys.exit(1) + except cmdutil.UsageError, e: + print "Invalid usage:", e + print "\nArgs:", sys.argv[1:] + print cmdutil.help(sys.argv[1]) + sys.exit(1) except cmdutil.UserError, e: print "ERROR:" print e diff --git a/libbe/cmdutil.py b/libbe/cmdutil.py index 0dd8ad0..7414e46 100644 --- a/libbe/cmdutil.py +++ b/libbe/cmdutil.py @@ -32,10 +32,10 @@ class UserError(Exception): def __init__(self, msg): Exception.__init__(self, msg) -class UserErrorWrap(UserError): - def __init__(self, exception): - UserError.__init__(self, str(exception)) - self.exception = exception +class UnknownCommand(UserError): + def __init__(self, cmd): + Exception.__init__(self, "Unknown command '%s'" % cmd) + self.cmd = cmd class UsageError(Exception): pass @@ -58,13 +58,13 @@ def get_command(command_name): >>> get_command("asdf") Traceback (most recent call last): - UserError: Unknown command asdf + UnknownCommand: Unknown command asdf >>> repr(get_command("list")).startswith("