diff options
author | Phillip J. Eby <pje@telecommunity.com> | 2006-03-25 00:05:50 (GMT) |
---|---|---|
committer | Phillip J. Eby <pje@telecommunity.com> | 2006-03-25 00:05:50 (GMT) |
commit | bee071221419795d707a15286e08424d141a6ca6 (patch) | |
tree | 1a507dcab84a78155055db907b418bff9932cc05 | |
parent | 43b00da219d8490631f37cd4424fca30e1848404 (diff) | |
download | cpython-bee071221419795d707a15286e08424d141a6ca6.zip cpython-bee071221419795d707a15286e08424d141a6ca6.tar.gz cpython-bee071221419795d707a15286e08424d141a6ca6.tar.bz2 |
Support throw() of string exceptions.
-rw-r--r-- | Lib/test/test_generators.py | 6 | ||||
-rw-r--r-- | Objects/genobject.c | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py index 4be1b4c..6b9b491 100644 --- a/Lib/test/test_generators.py +++ b/Lib/test/test_generators.py @@ -1545,6 +1545,9 @@ caught ValueError (1) >>> g.throw(ValueError, TypeError(1)) # mismatched type, rewrapped caught ValueError (1) +>>> g.throw(ValueError, ValueError(1), None) # explicit None traceback +caught ValueError (1) + >>> g.throw(ValueError(1), "foo") # bad args Traceback (most recent call last): ... @@ -1592,8 +1595,7 @@ ValueError: 7 >>> f().throw("abc") # throw on just-opened generator Traceback (most recent call last): ... -TypeError: exceptions must be classes, or instances, not str - +abc Now let's try closing a generator: diff --git a/Objects/genobject.c b/Objects/genobject.c index 3f6ef85..e7b8f87 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -249,7 +249,10 @@ gen_throw(PyGenObject *gen, PyObject *args) Py_INCREF(typ); } } - else { + + /* Allow raising builtin string exceptions */ + + else if (!PyString_CheckExact(typ)) { /* Not something you can raise. throw() fails. */ PyErr_Format(PyExc_TypeError, "exceptions must be classes, or instances, not %s", |