zoukankan      html  css  js  c++  java
  • python 异常处理

       异常处理             

      1.什么是异常
         IndexError [][1]
        KeyError {}['key']
        pickle.load() EOFError
        FileNotFoundError open('aa')
        ModuleNotFoundError import aaaaaaaaaaa
        ValueError int('sdjkhf')
      2.什么时候最容易出异常
          当你要处理的内容不确定的时候
            1.有用户参与
            2.有外界数据接入 : 从文件中读 从网络上获取
    # 当有多行报错的时候是为什么?
    # def func1():
    #     name
    #
    # def func2():
    #     func1()
    #
    # def main():
    #     func2()
    #
    # main()
    # 在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分
    
    # 怎么解决
    # 从下往上找 首先找到你写的代码 出错的那一行
    # 看看能不能看出问题
    # 就把报错的最后一行 错误类型和详细提示贴到百度里,结合报错的那一行解决问题

    单分支

    try:
        name = int('a')
    except ValueError:
        print("值错误")
    

      多分支

    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except ValueError:
        print("值错误")
    except IndexError:
        print("索引超出li的范围")
    

      

    多分支合并
    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except (ValueError, IndexError):
        print("输入错误")
    
    
    

      万能异常

    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except Exception:
        print("输入错误")
    

      as语法

    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except Exception as e:
        print(e)
        print("输入错误")
    

      else 语句

        当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理

    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except Exception as e:
        print(e)
        print("输入错误")
    else:
        print("没有错误")
    

      finally 语句

        无论如何都会被执行

    li = ['a', 1, 'w']
    try:
        num = int(input('num >>>'))
        print(li[num-1])
    except Exception as e:
        print(e)
        print("输入错误")
    finally:
        print("无论如何都会执行")
    

      主动抛异常

        主动抛出异常 : 是给其他开发者用的

        raise ValueError

        raise ValueError('你写的不对')

        django是别人写的程序 框架 --> 程序员用

      断言 - 语法

        assert 1==2 # 只能接受一个布尔值 False

        assert 1==1 # 只能接受一个布尔值 False

        print(123456)
        if 1 == int(input()):
         pass
        else:
        raise AssertionError

     
  • 相关阅读:
    实验四 主存空间的分配和回收
    学期总结
    实验三 进程调度模拟程序
    团队项目
    博客参考评论
    dos系统
    学习进度条
    了解和熟悉操作系统
    问题的思考和回答
    Python-关于脚本和冒泡算法
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9520417.html
Copyright © 2011-2022 走看看