summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhillip J. Eby <pje@telecommunity.com>2006-03-25 00:05:50 (GMT)
committerPhillip J. Eby <pje@telecommunity.com>2006-03-25 00:05:50 (GMT)
commitbee071221419795d707a15286e08424d141a6ca6 (patch)
tree1a507dcab84a78155055db907b418bff9932cc05
parent43b00da219d8490631f37cd4424fca30e1848404 (diff)
downloadcpython-bee071221419795d707a15286e08424d141a6ca6.zip
cpython-bee071221419795d707a15286e08424d141a6ca6.tar.gz
cpython-bee071221419795d707a15286e08424d141a6ca6.tar.bz2
Support throw() of string exceptions.
-rw-r--r--Lib/test/test_generators.py6
-rw-r--r--Objects/genobject.c5
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",