猿问

Python尝试-否则

Python尝试-否则

选项的预期用途是什么?else的条款try口供?



慕尼黑8549860
浏览 684回答 3
3回答

尚方宝剑之说

的声明else如果执行从try-如果没有例外的话。老实说,我从来没有发现需要。然而,处理异常注:使用ASER子句比向try子句添加额外代码更好,因为它避免意外捕获未被try保护的代码引发的异常.除了陈述。因此,如果您有一个方法,例如,可以抛出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它不会在这里被抓到

森栏

有一个大的使用理由else-风格和可读性。通常,将可能导致异常的代码保存在处理它们的代码附近是一个好主意。例如,比较以下几个方面:try:     from EasyDialogs import AskPassword     # 20 other lines     getpass = AskPasswordexcept ImportError:     getpass = default_getpass和try:     from EasyDialogs import AskPasswordexcept ImportError:     getpass = default_getpasselse:     # 20 other lines     getpass = AskPassword第二个是好的,当except不能提前返回,或者重新抛出异常。如果可能的话,我会写:try:     from EasyDialogs import AskPasswordexcept ImportError:     getpass = default_getpass    return False  # or throw Exception('something more descriptive')# 20 other linesgetpass = AskPassword
随时随地看视频慕课网APP

相关分类

Python
我要回答