Python try-else

发布于 2021-01-29 19:30:24

语句的可选else子句的预期用途是try什么?

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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_ioerrorexcept则将捕获第二个调用的错误。而且,如果将其放在整个代码try块之后,它将始终运行,直到finally。将else让您确保

    1. 只有在没有异常的情况下,第二个操作才会运行
    2. 它在代码finally块之前运行,并且
    3. IOError它筹集到的任何钱都没有被抓住


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看