• 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

     
  • 相关阅读:
    cogs 896. 圈奶牛
    bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
    bzoj 1007: [HNOI2008]水平可见直线
    bzoj 3673: 可持久化并查集 by zky
    bzoj 3545: [ONTAK2010]Peaks
    bzoj 1901: Zju2112 Dynamic Rankings
    动态 K th
    poj 2104 K-th Number
    bzoj 3657 斐波那契数列(fib.cpp/pas/c/in/out)
    青蛙的约会
  • 原文地址:https://www.cnblogs.com/JinMuBaoBao/p/9520417.html
Copyright © 2020-2023  润新知