• 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
  • 相关阅读:
    pycharm出现乱码
    Name-based virtual servers 给予名称的虚拟服务
    预建报为稳定版本
    nginx指令
    Module ngx_http_index_module nginx的首页模块
    我还在坚持中~
    手机端页面自适应解决方案—rem布局进阶版
    前端页面的适配使用rem换算
    js零碎知识汇总
    让input不可编辑
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/10964799.html
Copyright © 2020-2023  润新知