如何正确引发异常?
我尝试了以下方法:
#[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 {...}
}
这与此处描述的实现方式完全相同。
当我创建一个Foo
具有无效参数值的实例时,而不是ValueError
aSystemError
引发错误文本<class 'Foo'> returned a result with an error set
。
我在 Linux 上每晚使用 pyo3 0.11.1 和 Rust 1.47.0。