検討
try:
f(*args, **kwargs)
except TypeError:
print "doh!"
この場合の理由はTypeError
、関数の引数に問題がある可能性がありますf() got an unexpected keyword argument 'b'
。ただし、TypeError
関数本体自体の問題が原因で発生することもありますlist indices must be integers, not str
。
Python 2 では、両方のケース (引数の問題、本体の問題) を区別するためのしっかりした方法があるのだろうかと思います。たぶん、デコレータベースのアプローチですか?
理由: 私は別の種類のジョブ システムを実装しています。ジョブは基本的に機能です。この関数への引数は、ユーザー入力から派生し、JSON シリアライゼーション/デシリアライゼーション プロセスを経ることができます。システムのユーザーに可能な限り正確なエラー メッセージを提供するシステムが必要です。したがって、ジョブの実行を制御するエンティティが の両方のソースを区別できるようにしたいと考えていますTypeError
。さらに、これ自体が非常に興味深い問題だと思います。
https://stackoverflow.com/questions/12712475/how-to-check-if-a-typeerror-raised-from-mismatched-function-arguments基本的にこの質問の複製であることを認識しています。しかし、そこでのコメント ディスカッションは、何の回答も得られずに止まってしまいました。この場合、私自身の質問を開いて問題を再定式化しても問題ないことを願っています。