From 184482af6eb1e68f2a1c063cd5be4ab18aab88d0 Mon Sep 17 00:00:00 2001 From: Corbin Simpson Date: Fri, 3 Sep 2010 13:26:08 -0700 Subject: [PATCH] ExprNodes: Add C++ error handling for std::invalid_argument. Also expand comments slightly. --- Cython/Compiler/ExprNodes.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py index 549779b7..be4bf507 100755 --- a/Cython/Compiler/ExprNodes.py +++ b/Cython/Compiler/ExprNodes.py @@ -7050,8 +7050,13 @@ static void __Pyx_CppExn2PyErr() { ; // let the latest Python exn pass through and ignore the current one else throw; + } catch (const std::invalid_argument& exn) { + // Catch a handful of different errors here and turn them into the + // equivalent Python errors. + // Change invalid_argument to ValueError + PyErr_SetString(PyExc_ValueError, exn.what()); } catch (const std::out_of_range& exn) { - // catch out_of_range explicitly so the proper Python exn may be raised + // Change out_of_range to IndexError PyErr_SetString(PyExc_IndexError, exn.what()); } catch (const std::exception& exn) { PyErr_SetString(PyExc_RuntimeError, exn.what()); -- 2.26.2