From: Phillip J. Eby Date: Sat, 25 Mar 2006 00:05:50 +0000 (+0000) Subject: Support throw() of string exceptions. X-Git-Tag: v2.5a0~106 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bee071221419795d707a15286e08424d141a6ca6;p=thirdparty%2FPython%2Fcpython.git Support throw() of string exceptions. --- diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py index 4be1b4c5252d..6b9b49135089 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 3f6ef859eedb..e7b8f8754a1f 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",