diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2007-07-07 13:03:55 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2007-07-07 13:03:55 +0000 |
commit | 4dcda65e3a00c3b87db3851fc20993884c7d512e (patch) | |
tree | ebeb314dc06dd3aa056b037b2c1f40620388fd82 /gobject/option.py | |
parent | fe3966c22cbf5e198164b088b4f46f280bc33126 (diff) | |
download | pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.tar.gz pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.tar.xz pygobject-4dcda65e3a00c3b87db3851fc20993884c7d512e.zip |
Bug 342948 – Add exception handling to GOption
svn path=/trunk/; revision=681
Diffstat (limited to 'gobject/option.py')
-rw-r--r-- | gobject/option.py | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/gobject/option.py b/gobject/option.py index ce869d1..14f7780 100644 --- a/gobject/option.py +++ b/gobject/option.py @@ -31,11 +31,16 @@ GOptionGroup in gobject. import sys import optparse -from optparse import OptionError +from optparse import OptParseError, OptionError, OptionValueError, \ + BadOptionError, OptionConflictError import _gobject as gobject __all__ = [ + "OptParseError", "OptionError", + "OptionValueError", + "BadOptionError", + "OptionConflictError" "Option", "OptionGroup", "OptionParser", @@ -172,7 +177,15 @@ class OptionGroup(optparse.OptionGroup): opt = self._long_opt[option_name] else: opt = self._short_opt[option_name] - opt.process(option_name, option_value, self.values, parser) + + try: + opt.process(option_name, option_value, self.values, parser) + except OptionValueError, error: + gerror = gobject.GError(str(error)) + gerror.domain = gobject.OPTION_ERROR + gerror.code = gobject.OPTION_ERROR_BAD_VALUE + gerror.message = str(error) + raise gerror group = gobject.OptionGroup(self.name, self.description, self.help_description, callback) @@ -301,5 +314,19 @@ class OptionParser(optparse.OptionParser): context = self._to_goptioncontext(values) largs.extend(context.parse([sys.argv[0]] + rargs)) + def parse_args(self, args=None, values=None): + try: + return optparse.OptionParser.parse_args(self, args, values) + except gobject.GError, error: + if error.domain != gobject.OPTION_ERROR: + raise + if error.code == gobject.OPTION_ERROR_BAD_VALUE: + raise OptionValueError(error.message) + elif error.code == gobject.OPTION_ERROR_UNKNOWN_OPTION: + raise BadOptionError(error.message) + elif error.code == gobject.OPTION_ERROR_FAILED: + raise OptParseError(error.message) + else: + raise make_option = Option |