我在不同的except
块中指定了特定的异常,但是当我引发exchangelib.errors.ErrorFolderNotFound
时,它会转到错误的except
块(即它转到TransportError except
块)。你知道吗
我有这个密码:
import exchangelib
try:
#some code
raise exchangelib.errors.ErrorFolderNotFound
except exchangelib.errors.TransportError:
print("transport error caught")
except exchangelib.errors.ErrorFolderNotFound:
print("folder not found caught")
except Exception as e:
print("exception caught")
但是当我把ErrorFolderNotFound
except块移到TransportError
块上方时,它会移到右边的块(即ErrorFolderNotFound
except块)
import exchangelib
try:
#some code
raise exchangelib.errors.ErrorFolderNotFound
except exchangelib.errors.ErrorFolderNotFound:
print("folder not found caught")
except exchangelib.errors.TransportError:
print("transport error caught")
except Exception as e:
print("exception caught")
为什么会发生这种行为,因为我在except
块中给出了特定的异常?。你知道吗
此外,如果发生属于exchangelib同一系列的任何其他异常,它将转到在except
块中已经定义了某个特定exchangelib错误的except块,它应转到“except block of exception”
在下面的代码中,当出现错误时,它转到TransportError
除块之外,但逻辑上它应该转到除块之外的异常
import exchangelib
try:
#some code
raise exchangelib.errors.ErrorFolderNotFound
except exchangelib.errors.TransportError:
print("transport error caught")
except Exception as e:
print("exception caught")
不知道
exchangelib.errors
中异常的层次结构,我只能猜测ErrorFolderNotFound
继承自TransportError
。即它将打印出
transport error caught
如果我们改变层次结构,使
ErrorFolderNotFound
不从TransportError
继承。即然后我们会得到
folder not found caught
相关问题 更多 >
编程相关推荐