我是python的新手,需要一些帮助来理解这段代码:
for c in [B, C, D]:
try:
raise c()
except D:
print "D"
except C:
print "C"
except B:
print "B"
阅读python文档时,似乎raise()
会抛出异常,但我无法弄清楚为什么raise()
在try
块内。不应该是这样的:
try:
//do something
catch:
raise()
答案 0 :(得分:2)
raise
是您首先提出异常的方式。异常处理程序中的唯一raise
仅将异常传播给外部处理程序。
答案 1 :(得分:2)
我认为raise()直接放在try中:仅用于说明目的。 甚至通常你会把代码导致异常(即一个包含raise())在try中,不是吗?
答案 2 :(得分:1)
这段代码有点荒谬,因为它是一种奇怪的做事方式,但它很清楚发生了什么。列表[B, C, D]
是一个例外列表。由于raise
块中的异常为try
d,因此会立即由相应的except
处理程序处理(连续,except B:
,except C:
, except D:
处理程序。
因此,此代码相当于:
print "B"
print "C"
print "D"
如果B
,C
或D
中的任何一个不是例外,它将抛出(未捕获)异常。