如果我在python中使用用c编写的lib,比如zlib,我会收到如下错误:
error: Error -3 while decompressing: invalid distance too far back
如何处理这个异常是python?可能是在c模块中定义了异常,并且没有像except SomeException
那样可以捕获的异常类?
答案 0 :(得分:1)
要从Python调用C函数,C函数必须由Python函数包装。对于CPython,可以使用Swig,Cython等软件包或在ctypes
模块的帮助下使用Python编写包装器。包装器必须将Python输入转换为C值,定义C输出变量,调用C函数,检查返回代码,并将C输出转换为Python并将其返回或将C代码转换为Python异常并引发它。 / p>
您似乎正在使用包含C zlib
的Python zlib
。它定义了一个Python异常类error
。
>>> import zlib
>>> zlib.error
<class 'zlib.error'>
>>> issubclass(zlib.error, Exception)
True
你像任何其他例外一样抓住它。
>>> try:
raise zlib.error('Error 99: unknown')
except zlib.error as e:
print(e)
Error 99: unknown
为了与异常命名约定保持一致,我将它命名为ZlibError
。