• day 1 异常基本功能


    1.什么是异常?程序出现的错误

    In [1]: open('xxx.txt')
    ---------------------------------------------------------------------------
    FileNotFoundError                         Traceback (most recent call last)
    <ipython-input-1-e41727968802> in <module>()
    ----> 1 open('xxx.txt')
    
    FileNotFoundError: [Errno 2] No such file or directory: 'xxx.txt'
    
    In [2]: print(num)
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-2-64c1b968c91a> in <module>()
    ----> 1 print(num)
    
    NameError: name 'num' is not defined

    2.异常处理,预处理方案

    try:
        print(num)
        print("-----1-----")
    except NameError:
        print("出现名字异常错误")
    print("------2------")
    #### 运行结果
    出现名字异常错误
    ------2------

    3.多个异常

      1)版本1:

     try:
         open("xxx.txt")
         print(num)
         print("-----1-----")
     except NameError:
         print("出现名字异常错误")
     
     except FileNotFoundError:
         print("文件不存在。。")
         
     print("------2------")
    文件不存在。。
    ------2------

      2)版本2:

     try:
         open("xxx.txt")
         print(num)
         print("-----1-----")
     except (NameError,FileNotFoundError):
         print("出现异常错误")
     
     print("------2------")
    出现异常错误
    ------2------

      3)版本3:其他异常

    try:
        11/0
        open("xxx.txt")
        print(num)
        print("-----1-----")
    except (NameError,FileNotFoundError):
        print("出现异常错误")
    except Exception:
        print("如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到")
    
    print("------2------")
    如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到
    ------2------

      4)版本4:查看异常原因

    try:
        11/0
        open("xxx.txt")
        print(num)
        print("-----1-----")
    except (NameError,FileNotFoundError):
        print("出现异常错误")
    
    except Exception as ret:
        print("如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到")
        print(ret)
    
    print("------2------")
    如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到
    division by zero
    ------2------

      5)版本5:没有异常

    try:
       # 11/0
       # open("xxx.txt")
       # print(num)
        print("-----1-----")
    except (NameError,FileNotFoundError):
        print("出现异常错误")
    
    except Exception as ret:
        print("如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到")
        print(ret)
    
    else:
        print("没有出现异常,,,哈哈哈哈")
    
    print("------2------")
    -----1-----
    没有出现异常,,,哈哈哈哈
    ------2------

    4  finally

      1)没有异常

    try:
       # 11/0
       # open("xxx.txt")
       # print(num)
        print("-----1-----")
    except (NameError,FileNotFoundError):
        print("出现异常错误")
    
    except Exception as ret:
        print("如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到")
        print(ret)
    
    else:
        print("没有出现异常,,,哈哈哈哈")
    finally:
        print("---这段程序死亡时候执行finally---")
    
    print("------2------")
    -----1-----
    没有出现异常,,,哈哈哈哈
    ---这段程序死亡时候执行finally---
    ------2------

      2)有异常

    try:
        11/0
        open("xxx.txt")
        print(num)
        print("-----1-----")
    except (NameError,FileNotFoundError):
        print("出现异常错误")
    
    except Exception as ret:
        print("如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到")
        print(ret)
    
    else:
        print("没有出现异常,,,哈哈哈哈")
    finally:
        print("---这段程序死亡时候执行finally---")
    
    print("------2------")
    如果用了Exception,那么意味着只要上面的except没有捕获到异常,这个except一定会捕获到
    division by zero
    ---这段程序死亡时候执行finally---
    ------2------

      

      3)不管有没有异常,都关闭文件

    import time
    try:
        f = open('test.txt')
        try:
            while True:
                content = f.readline()
                if len(content) == 0:
                    break
                time.sleep(2)
                print(content)
        except:
            #如果在读取文件的过程中,产生了异常,那么就会捕获到
            #比如 按下了 ctrl+c
            pass
        finally:
            f.close()
            print('关闭文件')
    except:
        print("没有这个文件")
  • 相关阅读:
    sessionStorage 前端HTML5会话管理
    html多文件上传,可支持预览
    com.alibaba.druid.pool.DruidDataSource : {dataSource2} init error
    MybatisPlus 3.0代码生成器
    Node.js、npm、vuecli 的安装配置环境变量
    vuecli +echartsamap集成echarts和高德地图TypeError: Cannot read property 'dataToPoint' of null解决方案
    SpringBoot2.0+MybatisPlus3.0+Druid1.1.10 一站式整合
    MySQL DATE_FORMAT函数使用
    shiro使用redis作为缓存,出现要清除缓存时报错 java.lang.Exception: Failed to deserialize at org.crazycake.shiro.SerializeUtils.deserialize(SerializeUtils.java:41) ~[shiroredis2.4.2.1RELEASE.jar:na]
    【接口时序】4、SPI总线的原理与Verilog实现
  • 原文地址:https://www.cnblogs.com/venicid/p/7894737.html
Copyright © 2020-2023  润新知