在python中处理c库错误?

问题描述:

如果我用C语言编写Python中的lib下,如zlib,我得到这样一个错误:在python中处理c库错误?

error: Error -3 while decompressing: invalid distance too far back 

如何处理这个异常是Python?大概这个异常是在c模块中定义的,并且没有像except SomeException这样的异常类被捕获?

要从Python中调用C函数,必须使用Python函数包装C函数。对于CPython,可以使用诸如Swig之类的包,Cython或Python中的包来帮助编写包装器,并使用​​模块的帮助来编写包装器。包装器必须将Python输入转换为C值,定义C输出变量,调用C函数,检查返回代码,并将C输出转换为Python并将其返回或将C代码翻译为Python异常并将其提升。

看来您正在使用Python的zlib,它包装了一个C 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