当前位置: 首页> 游戏> 攻略 > try…except…finally语句

try…except…finally语句

时间:2025/8/11 14:19:29来源:https://blog.csdn.net/weixin_67859959/article/details/139455097 浏览次数:0次

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

完整的异常处理语句应该包含finally代码块,通常情况下,无论程序中有无异常产生,finally代码块中的代码都会被执行,其语法格式如下:

try:

    block1

except [ExceptionName [as alias]]:

    block2

finally:

    block3

对于try…except…finally语句的理解并不复杂,它只是比try…except语句多了一个finally语句,如果程序中有一些在任何情形中都必须执行的代码,那么就可以将它们放在finally代码块中。

说明:使用except子句是为了允许处理异常。无论是否引发了异常,使用finally子句都可以执行清理代码。如果分配了有限的资源(如打开文件),则应将释放这些资源的代码放置在finally代码块中。

例如,再对实例02进行修改,实现当division()函数在执行时无论是否抛出异常,都输出文字“进行了一次分苹果操作”。修改后的代码如下:

def division():

    '''功能:分苹果'''

    print("\n===================== 分苹果了 =====================\n")

    apple = int(input("请输入苹果的个数:"))          # 输入苹果的数量

    children = int(input("请输入来了几个小朋友:"))

    result = apple // children                       # 计算每人分几个苹果

    remain = apple - result * children                  # 计算余下几个苹果

    if remain > 0:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result,

              "个,剩下", remain, "个。")

    else:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")

if __name__ == '__main__':

    try:                                                # 捕获异常

        division()                                  # 调用分苹果的函数

    except ZeroDivisionError:                         # 处理异常

        print("\n出错了 ~_~ ――苹果不能被0个小朋友分!")

    except ValueError as e:                             # 处理ValueError异常

        print("输入错误:", e)                          # 输出错误原因

    else:                                                # 没有抛出异常时执行

        print("分苹果顺利完成...")

    finally:                                              # 无论是否抛出异常都执行

        print("进行了一次分苹果操作。")

执行以上程序,将显示如图8所示的运行结果。

图8  不抛异常时提示相应信息

至此,已经介绍了异常处理语句的try…except、try…except…else和try…except…finally等形式。下面通过图9说明异常处理语句的各个子句的执行关系。

图9  异常处理语句的不同子句的执行关系

关键字:try…except…finally语句

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: