diff --git a/paddle/fluid/pybind/eager.cc b/paddle/fluid/pybind/eager.cc index 1f72af8d79d17e0d865e8c3ca738243efb3edb9f..c600844596d98f023a1b372b988ae01fe692e58f 100644 --- a/paddle/fluid/pybind/eager.cc +++ b/paddle/fluid/pybind/eager.cc @@ -409,6 +409,7 @@ void AutoInitTensorByTensor(TensorObject* py_tensor_ptr, * ** name: std::string) * **/ int TensorInit(PyObject* self, PyObject* args, PyObject* kwargs) { + EAGER_TRY // set a flag to record use kwargs or not bool flag_kwargs = false; if (kwargs) flag_kwargs = true; @@ -703,7 +704,8 @@ int TensorInit(PyObject* self, PyObject* args, PyObject* kwargs) { "make sure u call the existed constructor.")); } - return 1; + return -1; + EAGER_CATCH_AND_THROW_RETURN_NEG } static void TensorDealloc(TensorObject* self) { diff --git a/paddle/fluid/pybind/eager_properties.cc b/paddle/fluid/pybind/eager_properties.cc index 4c11fcc7c98c1bb0750231f2feab9a577aff1389..a72ea6c4b02e1595987806a7850f17d5ad4d39f7 100644 --- a/paddle/fluid/pybind/eager_properties.cc +++ b/paddle/fluid/pybind/eager_properties.cc @@ -69,7 +69,7 @@ int tensor_properties_set_name(TensorObject* self, PyObject* value, EAGER_TRY self->tensor.set_name(CastPyArg2AttrString(value, 0)); return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyObject* tensor_properties_get_stop_gradient(TensorObject* self, @@ -110,7 +110,7 @@ int tensor_properties_set_grad(TensorObject* self, PyObject* value, "the grad inside autograd_meta")); grad->copy_(src, self->tensor.inner_place(), true); return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } int tensor_properties_set_stop_gradient(TensorObject* self, PyObject* value, @@ -122,7 +122,7 @@ int tensor_properties_set_stop_gradient(TensorObject* self, PyObject* value, meta->SetGradNode(std::make_shared(meta)); } return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyObject* tensor_properties_get_persistable(TensorObject* self, void* closure) { @@ -138,7 +138,7 @@ int tensor_properties_set_persistable(TensorObject* self, PyObject* value, auto meta = egr::EagerUtils::autograd_meta(&self->tensor); meta->SetPersistable(CastPyArg2AttrBoolean(value, 0)); return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyObject* tensor_properties_get_shape(TensorObject* self, void* closure) { diff --git a/paddle/fluid/pybind/eager_py_layer.cc b/paddle/fluid/pybind/eager_py_layer.cc index e9ddfd80bb86779d0244dbcd823b384a7a8f804f..cade856b3607a536b8d9cf468283e61ee7d78abf 100644 --- a/paddle/fluid/pybind/eager_py_layer.cc +++ b/paddle/fluid/pybind/eager_py_layer.cc @@ -395,7 +395,7 @@ int tensor_properties_set_container(PyLayerObject* self, PyObject* value, Py_XDECREF(self->container); self->container = value; return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyObject* tensor_properties_get_non_differentiable(PyLayerObject* self, @@ -417,7 +417,7 @@ int tensor_properties_set_non_differentiable(PyLayerObject* self, Py_XDECREF(self->non_differentiable); self->non_differentiable = value; return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyObject* tensor_properties_get_dirty_tensors(PyLayerObject* self, @@ -439,7 +439,7 @@ int tensor_properties_set_dirty_tensors(PyLayerObject* self, PyObject* value, Py_XDECREF(self->dirty_tensors); self->dirty_tensors = value; return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } int tensor_properties_set_materialize_grads(PyLayerObject* self, @@ -447,7 +447,7 @@ int tensor_properties_set_materialize_grads(PyLayerObject* self, EAGER_TRY self->materialize_grads = CastPyArg2AttrBoolean(value, 0); return 0; - EAGER_CATCH_AND_THROW_RETURN_ZERO + EAGER_CATCH_AND_THROW_RETURN_NEG } PyMethodDef pylayer_methods[] = { diff --git a/paddle/fluid/pybind/exception.h b/paddle/fluid/pybind/exception.h index cf82f464a11f292b8ba09dc4cdba4eb3db6e1d96..b0e0ef821038929c482c9089509ac31c6778719a 100644 --- a/paddle/fluid/pybind/exception.h +++ b/paddle/fluid/pybind/exception.h @@ -26,11 +26,11 @@ limitations under the License. */ return nullptr; \ } -#define EAGER_CATCH_AND_THROW_RETURN_ZERO \ +#define EAGER_CATCH_AND_THROW_RETURN_NEG \ } \ catch (...) { \ ThrowExceptionToPython(std::current_exception()); \ - return 0; \ + return -1; \ } namespace paddle {