考虑
try:
f(*args, **kwargs)
except TypeError:
print "doh!"
在这种情况下
TypeError
的原因可能会导致函数参数出现问题,例如f() got an unexpected keyword argument 'b'
。但是,由于功能主体本身存在问题,例如TypeError
,也可能引发list indices must be integers, not str
。 TypeError
。我想知道Python 2中是否有一种可靠的方法来区分两种情况(参数问题,主体问题)。也许一些基于装饰器的方法?
推理:我正在实施另一种工作系统。工作基本上是一项功能。此函数的参数可以从用户输入派生并经过JSON序列化/反序列化过程。我希望系统向系统用户提供尽可能准确的错误消息。因此,我希望控制作业执行的实体能够区分的两个来源。此外,我认为这本身就是一个非常有趣的问题。
我意识到https://stackoverflow.com/questions/12712475/how-to-check-if-a-typeerror-raised-from-mismatched-function-arguments基本上是这个问题的重复。但是,那里的评论讨论刚刚停止,没有任何答案。我希望在这种情况下可以打开我自己的问题并重新制定该问题。
最佳答案
所以我不会这样做,因为您要传播的内部错误是编码错误,而不是需要捕获的实际异常。
话虽如此。我会反省所引发的错误,使一个错误静默并传播另一个错误。
关于python - 区分由错误的函数参数触发和由函数主体触发的TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12866788/