• python note 19 异常处理


    1、单分支

    # 单分支
    l = ['login','register']
    for num,i in enumerate(l,1):
        print(num,i)
    
    try:
        num = int(input('num >>>'))
        print(l[num - 1])
    except ValueError :      # except处理的异常必须和实际报错的异常是相同的
        print('请输入一个数字')

    2、多分支

    # 多分支
    l = ['login','register']
    for num,i in enumerate(l,1):
        print(num,i)
    
    try:
        num = int(input('num >>>'))
        print(l[num - 1])
    except ValueError :
        # 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
        print('请输入一个数字')
    except IndexError :
        # 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
        print('只能输入1或2')

    3、多分支合并

    # 多分支合并
    l = ['login','register']
    for num,i in enumerate(l,1):
        print(num,i)
    
    try:
        num = int(input('num >>>'))
        print(l[num - 1])
    except (ValueError,IndexError) :
        print('您输入的内容不合法')

    4、万能异常

    # 万能异常
    def buy():
        print('buy')
        name
    
    def back():
        print('back')
        [][1]
    
    def show():
        print('show')
        1/0
    
    def main():
        l = [('购物',buy),('退货',back),('查看订单',show)]
        while True:
            for num,i in enumerate(l,1):
                print(num,i[0])
            num = int(input('num >>>'))
            print(l[num - 1])
            try:
                func = l[num - 1][1]
                func()
            except Exception:
                print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
    
    main()

    5、as语法  能够将具体错误信息打印出来

    except Exception as e:
        print(e)

    6、多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面

    try:
        pass
    except (ValueError,IndexError):
        print('针对性的处理')
    except Exception as e:
        print(e)
        print('通用性的处理')

    7、else分支

    try:
        print('aaa')  # 给某某某发邮件
        # name
        # [][1]
        # 1/0
    except NameError:   # 网络不稳定,邮箱地址错误
        print('name error')
    except IndexError:
        print('index error')
    except Exception as e:
        print('Exception')
    else:  # 当try中的代码不发生异常的时候 走else分支  如果发送成功了 进行一些处理
        print('else')

    8、finally分支

    try:
        print('aaa')  # 给某某某发邮件
        # name
        # [][1]
        # 1/0
    except NameError:   # 网络不稳定,邮箱地址错误
        print('name error')
    except IndexError:
        print('index error')
    except Exception as e:
        print('Exception')
    else:  # 当try中的代码不发生异常的时候 走else分支  如果发送成功了 进行一些处理
        print('else')
    finally: # 无论如何都会被执行
        print('finally')

    9、异常处理的几种情况

    try ... except
    try ... except ... else
    try ... finally
    try ... except ... finally
    try ... except ... else ... finally
  • 相关阅读:
    wget下载https文件,服务器可以虚拟机中不行的问题
    FTP被动模式服务器端开有限的端口
    ZOJ
    HDU
    JAVA 大数 A+B问题
    A Simple Math Problem(矩阵快速幂)----------------------蓝桥备战系列
    Covering(矩阵快速幂)
    卡特兰数详讲(转)
    Just a Hook(线段树区间修改值)-------------蓝桥备战系列
    A Simple Problem with Integers(线段树区间更新复习,lazy数组的应用)-------------------蓝桥备战系列
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/10964799.html
Copyright © 2020-2023  润新知