私は、zlibのように、PythonでCで書かれたのlibを使用している、と私は次のようにエラーが出た場合:私は、この例外は、Pythonで扱うにはどうすればよいPythonでcライブラリエラーを処理しますか?
error: Error -3 while decompressing: invalid distance too far back
?おそらく例外はcモジュールで定義されており、catchする例外クラスはexcept SomeException
のようにはありませんか?
私は、zlibのように、PythonでCで書かれたのlibを使用している、と私は次のようにエラーが出た場合:私は、この例外は、Pythonで扱うにはどうすればよいPythonでcライブラリエラーを処理しますか?
error: Error -3 while decompressing: invalid distance too far back
?おそらく例外はcモジュールで定義されており、catchする例外クラスはexcept SomeException
のようにはありませんか?
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
名付けただろう。