zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    无向图求所有路径C#版
    centos 7 无痛安装 es
    rust 实现协程池
    spring boot fat jar 引入新的jar 文件到classpath
    nicolaka/netshoot 强大的容器网络问题解决工具
    使用nsenter 解决tcpcollect容器网络捕捉问题
    centraldogma git 镜像配置
    jmespath java 使用
    使用apicurio-registry 管理schema
    bfe 简单学习示例
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/10964799.html
Copyright © 2011-2022 走看看