现在我有一个问题,我想提出一个特定的TypeError,如果有的话。然而,最终发生的事情是解释器看到第一个错误,然后在处理它的过程中它引发另一个错误说“在处理上述异常期间,发生了另一个异常:”
这就是我所拥有的
def function(dictionary)
try:
value = max(dictionary.values())
except TypeError:
raise TypeError("some error")
我将以下内容插入shell:
function({1:'a', 2:3})
我该如何处理?
答案 0 :(得分:1)
如果要放弃异常上下文you can explicitly discard it using from None
,例如:
try:
value = max(dictionary.values())
except TypeError:
raise TypeError("some error") from None
那就是说,通常最好留下上下文;唯一一次,如果异常未被捕获并且发生了默认日志记录,或者您尝试记录异常(例如,使用logger.exception
),那么您将看到它。这些附加信息通常很有用,特别是对于非常广泛的异常类型,例如TypeError
和ValueError
(您打算捕获特定的已知子类型,并且意外地捕获以完全不同的方式引起的异常)。
要清楚,这仅适用于Python 3,但是,Python 3上的异常上下文链接仅存在 ;在Python 2上,上下文会自动丢失。
答案 1 :(得分:-1)
由于您在处理异常时引发异常,异常将被发送回调用函数。
如果你只是想处理它并打印错误并继续执行其余部分,你可以这样做
except TypeError as t:
print ("Error", t)