2016-11-10 8 views
0

私は、zlibのように、PythonでCで書かれたのlibを使用している、と私は次のようにエラーが出た場合:私は、この例外は、Pythonで扱うにはどうすればよいPythonでcライブラリエラーを処理しますか?

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

?おそらく例外はcモジュールで定義されており、catchする例外クラスはexcept SomeExceptionのようにはありませんか?

答えて

0

PythonからC関数を呼び出すには、C関数をPython関数でラップする必要があります。 CPythonの場合、ラッパーは、​​モジュールの助けを借りて、Swig、Cython、Pythonなどのパッケージを利用してC言語で記述することができます。ラッパーは、Pythonの入力をCの値に変換し、Cの出力変数を定義し、Cの関数を呼び出し、戻りコードをチェックし、Cの出力をPythonに変換して返すか、CのコードをPythonの例外に変換して呼び出す必要があります。

あなたは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名付けただろう。

関連する問題