Python try-else
语句的可选else
子句的预期用途是try
什么?
-
else
如果执行没有超出try
-如果没有异常,则执行块中的语句。老实说,我从来没有发现需要。但是,“处理异常”指出:
使用else子句比向try子句添加其他代码更好,因为它避免了意外捕获try … except语句保护的代码未引发的异常。
所以,如果你有一个方法可以,例如,抛出
IOError
了,你想抓住它会引发异常,但有你想,如果第一个操作成功做其它的事情,你 不要
想抓住从一个IOError该操作,您可能会这样写:try: operation_that_can_throw_ioerror() except IOError: handle_the_exception_somehow() else: # we don't want to catch the IOError if it's raised another_operation_that_can_throw_ioerror() finally: something_we_always_need_to_do()
如果仅放在
another_operation_that_can_throw_ioerror()
之后operation_that_can_throw_ioerror
,except
则将捕获第二个调用的错误。而且,如果将其放在整个代码try
块之后,它将始终运行,直到finally
。将else
让您确保- 只有在没有异常的情况下,第二个操作才会运行
- 它在代码
finally
块之前运行,并且 IOError
它筹集到的任何钱都没有被抓住