zoukankan      html  css  js  c++  java
  • 《Head First Python》学习笔记03 异常处理

    异常(运行时错误):       

           当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在。这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复。

    Python异常机制

           把异常当作正常情况处理。先尝试运行可能出现异常的代码,有异常就捕获,然后恢复。

    额外的代码和逻辑,还是异常处理?

               1.增加额外的代码和逻辑随着你考虑的错误越多,要添加的代码和逻辑也就越多,直到可能会掩盖程序本来逻辑。而异常处理方案不存在这个问题,使用异常处理你可以一目了然的看出程序的主要逻辑。

           2.而且你很难考虑到所有可能的错误情况。用异常处理机制可以轻松应对所有的异常。

           3.增加额外的代码和逻辑导致可能和实际错误的耦合性太大,代码要跟着情况变。而异常处理只需要关注是哪种异常。

               4.使用Python的异常处理机制,你可以专心关注程序真正需要做什么,而不是操心哪儿可能出问题,并编写额外的代码来避免运行时错误。

           5.简单的说,就是用额外的代码和逻辑会增加复杂性,这会给调试和修正代码带来麻烦。而Python的异常处理机制能让你专心关注代码的主要逻辑。

           所以还是推荐异常处理机制。

    Python异常机制具体内容:

    一般化处理

    try:

          #可能出现异常的代码

    except:

          #错误恢复代码

    处理特定异常

    try:

            #可能出现异常的代码

    except 具体异常:

            #对应的特定异常的处理代码




    保证无论是否出现异常某些代码都会执行

    ry:

            #可能出现异常的代码

    except 具体异常:

            #对应的特定异常的处理代码

    finally:

           #一定会执行的代码



    PS:

    处理异常时,可以在异常处理代码中使用pass语句简单的忽略异常。pass语句是Python的空语句,它什么也不做。

    在Python中,数据不符合期望的格式时会出现ValueError异常。数据无法正常访问时会出现IOError异常。

  • 相关阅读:
    第12周作业
    一张表格秒懂MES制造执行系统与ERP的区别关系
    spring boot:用dynamic-datasource-spring-boot-starter配置druid多数据源(spring boot 2.3.3)
    spring boot:使mybatis访问多个druid数据源(spring boot 2.3.2)
    linux(centos8):安装分布式事务服务seata(file单机模式,seata 1.3.0/centos 8.2)
    spring boot:单文件上传/多文件上传/表单中多个文件域上传(spring boot 2.3.2)
    spring boot: 用thymeleaf嵌套循环展示多层数据(spring boot 2.3.2)
    cmd 命令设置环境变量
    AtCoder Grand Contest 047
    AtCoder Grand Contest 032
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3190118.html
Copyright © 2011-2022 走看看