summaryrefslogtreecommitdiffstats
path: root/gobject/option.py
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2007-07-07 13:03:55 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2007-07-07 13:03:55 +0000
commit4dcda65e3a00c3b87db3851fc20993884c7d512e (patch)
treeebeb314dc06dd3aa056b037b2c1f40620388fd82 /gobject/option.py
parentfe3966c22cbf5e198164b088b4f46f280bc33126 (diff)
downloadpygobject-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.py31
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