Mercurial > cpython-lru_cache-weakref
comparison Python/errors.c @ 80189:a281604a5c9a
Issue #7317: Display full tracebacks when an error occurs asynchronously.
Patch by Alon Horev with update by Alexey Kachayev.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Sat, 03 Nov 2012 15:56:05 +0200 |
| parents | 9fdec1354af4 |
| children | bb94f6222fef |
comparison
equal
deleted
inserted
replaced
| 80188:70cef0a160cf | 80189:a281604a5c9a |
|---|---|
| 796 _Py_IDENTIFIER(__module__); | 796 _Py_IDENTIFIER(__module__); |
| 797 PyObject *f, *t, *v, *tb; | 797 PyObject *f, *t, *v, *tb; |
| 798 PyErr_Fetch(&t, &v, &tb); | 798 PyErr_Fetch(&t, &v, &tb); |
| 799 f = PySys_GetObject("stderr"); | 799 f = PySys_GetObject("stderr"); |
| 800 if (f != NULL && f != Py_None) { | 800 if (f != NULL && f != Py_None) { |
| 801 PyFile_WriteString("Exception ", f); | 801 if (obj) { |
| 802 PyFile_WriteString("Exception ignored in: ", f); | |
| 803 PyFile_WriteObject(obj, f, 0); | |
| 804 PyFile_WriteString("\n", f); | |
| 805 } | |
| 806 PyTraceBack_Print(tb, f); | |
| 802 if (t) { | 807 if (t) { |
| 803 PyObject* moduleName; | 808 PyObject* moduleName; |
| 804 char* className; | 809 char* className; |
| 805 assert(PyExceptionClass_Check(t)); | 810 assert(PyExceptionClass_Check(t)); |
| 806 className = PyExceptionClass_Name(t); | 811 className = PyExceptionClass_Name(t); |
| 826 PyFile_WriteString("<unknown>", f); | 831 PyFile_WriteString("<unknown>", f); |
| 827 else | 832 else |
| 828 PyFile_WriteString(className, f); | 833 PyFile_WriteString(className, f); |
| 829 if (v && v != Py_None) { | 834 if (v && v != Py_None) { |
| 830 PyFile_WriteString(": ", f); | 835 PyFile_WriteString(": ", f); |
| 831 PyFile_WriteObject(v, f, 0); | 836 PyFile_WriteObject(v, f, Py_PRINT_RAW); |
| 832 } | 837 } |
| 838 PyFile_WriteString("\n", f); | |
| 833 Py_XDECREF(moduleName); | 839 Py_XDECREF(moduleName); |
| 834 } | 840 } |
| 835 if (obj) { | |
| 836 PyFile_WriteString(" in ", f); | |
| 837 PyFile_WriteObject(obj, f, 0); | |
| 838 } | |
| 839 PyFile_WriteString(" ignored\n", f); | |
| 840 PyErr_Clear(); /* Just in case */ | 841 PyErr_Clear(); /* Just in case */ |
| 841 } | 842 } |
| 842 Py_XDECREF(t); | 843 Py_XDECREF(t); |
| 843 Py_XDECREF(v); | 844 Py_XDECREF(v); |
| 844 Py_XDECREF(tb); | 845 Py_XDECREF(tb); |
