17

によって提供されていないチェックを追加する場合は、次argparseのようになります。

if variable a == b then c should be not None 

...自分を育てることは許されArgumentErrorますか?

Exceptionまたは、代わりにレイズする必要がありますか?

また、この種の状況の一般的な慣行は何ですか?ライブラリのローカル拡張のようなコードを追加するとします。拡張しているライブラリによって提供されるものと同じ例外タイプを使用する必要がありますか?

4

1 に答える 1

22

ArgumentError を発生させても、本質的に問題はありません。数値の範囲をチェックするなど、受け取った引数が期待したものと異なる場合はいつでも使用できます。

また、はい、一般に、そのライブラリの拡張機能を作成している場合は、特定のライブラリが提供する同じ例外を使用しても問題ありません。

sを上げることに関してExceptionは、私はそうしません。コードで例外を処理する方法がわかるように、常に特定の例外を発生させる必要があります。Exception見逃したすべての例外をキャッチしてログに記録するには、アプリケーションの最上位レベルでオブジェクトをキャッチする必要があります。

于 2011-11-28T08:48:06.553 に答える