考虑
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基本上是这个问题的副本。然而,那里的评论讨论只是没有任何答案就停止了。我希望在这种情况下,可以打开我自己的问题并重新表述问题。