我们可以在Cython中执行此操作,这样每当返回值为-1时,Cython就会生成对PyErr_Occurred()
的调用:
cdef int spam() except?-1:
但是,如果返回类型是结构怎么办?
ctypedef struct A:
double x
double y
cdef A spam() except ?????
说,我想将错误值定义为:A(x=1, y=-1)
。有可能吗?
答案 0 :(得分:0)
根据文档,这可能是不可能的。
可以在cython
文档的Error return values部分的末尾找到此说明
异常值只能为返回整数,枚举,浮点或指针类型的函数声明,并且值必须是常量表达式。 Void函数只能使用except *形式。
答案 1 :(得分:0)
您无法指定错误值,但您可以通过编写
来传播错误= delete
将隐式使用cdef A spam() except *:
[code that may raise exceptions]
宏而不是返回值来确定是否发生错误。