我打得有点用的ctypes和C/C++的DLL 我有一个非常简单的“数学” DLLctypes的捕捉异常
double Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}
return a/b;
}
它的工作原理至今 唯一的问题,我得到一个WindowsError Python中的例外,我无法检索文本 b不能为零 是否有一些特殊的异常类型,我必须抛出?还是必须修改Python代码? Python代码:
from ctypes import *
mathdll=cdll.MathFuncsDll
divide = mathdll.Divide
divide.restype = c_double
divide.argtypes = [c_double, c_double]
try:
print divide (10,0)
except WindowsError:
print "lalal"
except:
print "dada"
我被扔标签 想,如果它的行为改变的东西...... 所以我应该怎么处理异常玩耍? – nobs 2012-04-17 08:58:03
你可以做的一件事就是放弃使用异常来将错误传递给Python代码;而是使用另一个输出参数来返回错误代码。不是很优雅,我知道......另一种选择是使用Swig,它对处理异常或Boost.Python有很好的支持。 – piokuc 2012-04-17 09:26:06