我打得有點用的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