gpt4 book ai didi

rust - 使用 pyo3 引发异常

转载 作者:行者123 更新时间:2023-12-03 11:25:59 25 4
gpt4 key购买 nike

如何正确引发异常?

我试过以下方法:

#[pymethods]
impl Foo {
#[new]
fn __new__(arg1: u8, ...) -> Self {
if arg1 > LIMIT {
let gil = Python::acquire_gil();
let py = gil.python();
PyErr::new::<exceptions::ValueError, _>("Parameter arg1 has invalid value").restore(py);
}
Foo {...}
}

这与描述的实现方式完全相同here .

当我创建 Foo 的实例时然后使用无效参数值而不是 ValueError一个SystemError引发错误文本 <class 'Foo'> returned a result with an error set .

我在 Linux 上每晚使用 pyo3 0.11.1 和 Rust 1.47.0。

最佳答案

您可以使用返回异常(将在 python 中引发)的 PyResult:

#[pymethods]
impl Foo {
#[new]
fn __new__(arg1: u8, ...) -> PyResult<Self> {
if arg1 > LIMIT {
Err(exceptions::PyValueError::new_err("Parameter arg1 has invalid value"))
} else {
Ok(Foo {...})
}
}

关于rust - 使用 pyo3 引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63128052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com