我在Python中有一个re-triable包装类,可以帮助其他 func 重试。我们假设我的班级名为 Wrapper 。这是我的粗略实现(不是真正的代码):
Wrapper:
while True:
try:
func()
except Exception as e:
pass
num_retry--
if num_try == 0
raise
当我使用包装器时,我会这样做:
try:
// use Wrapper
except Exception as e:
// handle exception
但是我发现除了部分没有捕获异常,为什么?关于raise有什么特别的Python吗?
答案 0 :(得分:0)
原因是因为您之前已表示已将pass
句子忽略为Wrapper
而忽略了该例外。然后异常将不会到达第一个try
,因为它将被忽略。
将删除的捕获移除到Wrapper
,然后只让捕获到外面。但正确的是你应该将异常捕获到Wrapper
而不是在他之外。