From: Guido van Rossum Date: Tue, 19 Dec 2000 03:04:50 +0000 (+0000) Subject: Improve error messages for invalid warning arguments; don't raise X-Git-Tag: v2.1a1~534 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d1db30b7b5b06686ad7753d6402d762033a7ee1d;p=python Improve error messages for invalid warning arguments; don't raise exceptions but always print a warning message. --- diff --git a/Lib/warnings.py b/Lib/warnings.py index 47eb19aa9f..a894bf2ee0 100644 --- a/Lib/warnings.py +++ b/Lib/warnings.py @@ -167,14 +167,20 @@ def _getcategory(category): if re.match("^[a-zA-Z0-9_]+$", category): try: cat = eval(category) - except KeyError: - raise _OptionError("invalid warning category: %s" % `category`) + except NameError: + raise _OptionError("unknown warning category: %s" % `category`) else: i = category.rfind(".") module = category[:i] klass = category[i+1:] - m = __import__(module, None, None, [klass]) - cat = getattr(m, klass) + try: + m = __import__(module, None, None, [klass]) + except ImportError: + raise _OptionError("invalid module name: %s" % `module`) + try: + cat = getattr(m, klass) + except AttributeError: + raise _OptionError("unknown warning category: %s" % `category`) if (not isinstance(cat, types.ClassType) or not issubclass(cat, Warning)): raise _OptionError("invalid warning category: %s" % `category`)