comparison pyeval.cc @ 423:6b9de18b4bdd

Eliminate remaining custom exception handling in favor of Octave errors * oct-py-error.cc, oct-py-error.h (pytave::error_python_exception): New function to generate an Octave error from an active Python error condition, based on pytave::fetch_exception_message. * oct-py-eval.cc (pytave::py_call_function, pytave::py_run_string_safe): Use it. * oct-py-types.cc (pytave::make_py_dict): Likewise. * oct-py-util.cc (pytave::py_objstore): Likewise. * pycall.cc (Fpycall): Remove exception handling logic. * pyeval.cc (Fpyeval): Likewise. * pyexec.cc (Fpyexec): Likewise. * exceptions.cc, exceptions.h: Delete. * Makefile.am (COMMON_SOURCE_FILES, PYTAVE_HEADER_FILES): Remove them.
author Mike Miller <mtmiller@octave.org>
date Thu, 04 May 2017 21:15:07 -0700
parents 8247f298fd16
children 3af3665348a1
comparison
equal deleted inserted replaced
422:8247f298fd16 423:6b9de18b4bdd
25 #endif 25 #endif
26 26
27 #include <Python.h> 27 #include <Python.h>
28 #include <octave/oct.h> 28 #include <octave/oct.h>
29 29
30 #include "exceptions.h"
31 #include "oct-py-eval.h" 30 #include "oct-py-eval.h"
32 #include "oct-py-init.h" 31 #include "oct-py-init.h"
33 #include "oct-py-object.h" 32 #include "oct-py-object.h"
34 #include "oct-py-types.h" 33 #include "oct-py-types.h"
35 #include "oct-py-util.h" 34 #include "oct-py-util.h"
79 local_namespace = pytave::pyobject_unwrap_object (args(1)); 78 local_namespace = pytave::pyobject_unwrap_object (args(1));
80 if (! local_namespace) 79 if (! local_namespace)
81 error ("pyeval: NAMESPACE must be a valid Python reference"); 80 error ("pyeval: NAMESPACE must be a valid Python reference");
82 } 81 }
83 82
84 try 83 pytave::python_object res = pytave::py_eval_string (code, 0, local_namespace);
85 {
86 pytave::python_object res = pytave::py_eval_string (code, 0, local_namespace);
87 84
88 if (nargout > 0 || ! res.is_none ()) 85 if (nargout > 0 || ! res.is_none ())
89 retval(0) = pytave::py_implicitly_convert_return_value (res); 86 retval(0) = pytave::py_implicitly_convert_return_value (res);
90 }
91 catch (pytave::error_already_set const &)
92 {
93 std::string message = pytave::fetch_exception_message ();
94 error ("pyeval: %s", message.c_str ());
95 }
96 87
97 return retval; 88 return retval;
98 } 89 }
99 90
100 /* 91 /*