15

C で Python モジュールを作成しています。組み込みの Python 例外では説明できないエラーを報告する必要があります。したがって、私は自分のタイプの例外をスローしたいと考えています。問題は、Python のポリシーが BaseException クラスからすべての例外を派生させることです。派生型オブジェクトの作成方法(tp_baseメンバーへの代入)は知っていますが、BaseException型オブジェクトへの参照の取得方法がわかりません。PyExc_BaseException は PyObject への参照であり、型オブジェクトではなくクラスを表します。

C コードからカスタム Python 例外をスローするにはどうすればよいですか?

4

2 に答える 2

6

C コードで新しい例外タイプを作成する最も簡単な方法は、 を呼び出すことPyErr_NewExceptionです。

于 2011-06-20T12:47:55.070 に答える
0

値としてを使用して tp_base を設定することができました(PyTypeObject*)PyExc_BaseException。これにより、カスタム例外が から適切に継承されBaseExceptionます。

の CPython ソース コードには、exceptions.cいくつかの良いヒントがあります。

于 2020-02-20T07:37:46.807 に答える