mirror of https://github.com/python/cpython
- Issue #2371: Add a Py3k warning when catching an exception that
doesn't derive from BaseException.
This commit is contained in:
parent
0bb7950829
commit
04edb528ca
|
@ -360,6 +360,7 @@ Magnus Kessler
|
||||||
Lawrence Kesteloot
|
Lawrence Kesteloot
|
||||||
Vivek Khera
|
Vivek Khera
|
||||||
Mads Kiilerich
|
Mads Kiilerich
|
||||||
|
Taek Joo Kim
|
||||||
Steve Kirsch
|
Steve Kirsch
|
||||||
Ron Klatchko
|
Ron Klatchko
|
||||||
Bastian Kleineidam
|
Bastian Kleineidam
|
||||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 2?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #2371: Add a Py3k warning when catching an exception that
|
||||||
|
doesn't derive from BaseException.
|
||||||
|
|
||||||
- Issue #2321: use pymalloc for unicode object string data to reduce
|
- Issue #2321: use pymalloc for unicode object string data to reduce
|
||||||
memory usage in some circumstances.
|
memory usage in some circumstances.
|
||||||
|
|
||||||
|
|
|
@ -4042,6 +4042,13 @@ assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define Py3kExceptionClass_Check(x) \
|
||||||
|
(PyType_Check((x)) && \
|
||||||
|
PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
|
||||||
|
|
||||||
|
#define CANNOT_CATCH_MSG "catching classes that don't inherit from " \
|
||||||
|
"BaseException is not allowed in 3.x."
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
cmp_outcome(int op, register PyObject *v, register PyObject *w)
|
cmp_outcome(int op, register PyObject *v, register PyObject *w)
|
||||||
{
|
{
|
||||||
|
@ -4079,6 +4086,16 @@ cmp_outcome(int op, register PyObject *v, register PyObject *w)
|
||||||
if (ret_val == -1)
|
if (ret_val == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (Py_Py3kWarningFlag &&
|
||||||
|
!Py3kExceptionClass_Check(exc))
|
||||||
|
{
|
||||||
|
int ret_val;
|
||||||
|
ret_val = PyErr_WarnEx(
|
||||||
|
PyExc_DeprecationWarning,
|
||||||
|
CANNOT_CATCH_MSG, 1);
|
||||||
|
if (ret_val == -1)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -4091,6 +4108,16 @@ cmp_outcome(int op, register PyObject *v, register PyObject *w)
|
||||||
if (ret_val == -1)
|
if (ret_val == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (Py_Py3kWarningFlag &&
|
||||||
|
!Py3kExceptionClass_Check(w))
|
||||||
|
{
|
||||||
|
int ret_val;
|
||||||
|
ret_val = PyErr_WarnEx(
|
||||||
|
PyExc_DeprecationWarning,
|
||||||
|
CANNOT_CATCH_MSG, 1);
|
||||||
|
if (ret_val == -1)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
res = PyErr_GivenExceptionMatches(v, w);
|
res = PyErr_GivenExceptionMatches(v, w);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue