• try....except....详细用法


    # 1.异常只能用来处理指定的异常取代,如果非指定异常则无法处理

    # 2多分支:被监测的代码块抛出的异常有多种可能性,并且我们需要针对每一种异常类型都定制专门的处理逻辑
    try:
    print('========>1')
    # name
    print('==========>2')
    l = [1, 2, 3]
    # l[100]
    print('==========>3')
    d={ }
    d['name']
    print('=============>4')

    except NameError as e:
    print('----------->', e)
    print(1)

    except IndexError as e:
    print('----------->', e)
    print(2)

    except KeyError as e:
    print('----------->', e)
    print(3)

    print('执行接下去的代码')

    '''如果遇到 NameError 执行结果:
    ========>1
    -----------> name 'name' is not defined
    ####执行完跳到 print('执行接下去的代码')
    '''
    '''如果遇到 IndexError 执行结果:
    ========>1
    ==========>2
    -----------> list index out of range
    ####执行完跳到 print('执行接下去的代码')
    '''

    '''如果遇到 KeyError 执行结果:
    ========>1
    ==========>2
    ==========>3
    -----------> 'name'
    ####执行完跳到 print('执行接下去的代码')
    '''

    # 万能异常:Exception ,被监测的代码块抛出的异常有多种可能性,
    # 并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用Exception

    try:
    print('========>1')
    name
    print('==========>2')
    l = [1, 2, 3]
    l[100]
    print('==========>3')
    d={ }
    d['name']
    print('=============>4')

    except Exception as e :
    print('------------>', e)

    print('执行接下去的代码')


    # 其他结构:

    try:
    print('========>1')
    name
    print('==========>2')
    l = [1, 2, 3]
    # l[100]
    print('==========>3')
    d={ }
    d['name']
    print('=============>4')

    except NameError as e:
    print('----------->', e)
    print(1)

    except IndexError as e:
    print('----------->', e)
    print(2)

    except KeyError as e:
    print('----------->', e)
    print(3)

    except Exception as e:
    print('统一的处理方法',333)

    else:
    print('在被监测的代码块没有发生异常时执行')

    finally:
    print('不管被监测的代码块有无发生异常都会执行')

    print('执行接下去的代码')

    # 主动触发异常:raise 异常类型(值)

    class People:
    def __init__(self,name,age):
    if not isinstance(name,str):
    raise TypeError('name传入必需是字符串类型')
    if not isinstance(age,int):
    raise TypeError('age 传入必需是int类型')

    self.name=name
    self.age=age


    p = People('kingfor',18)

    # 自定义异常类型:
    class MyException(BaseException):
    def __init__(self,msg):
    super(MyException,self).__init__()
    self.msg = msg

    def __str__(self):
    return '<%s>' % self.msg

    raise MyException('我自定义异常处理类型')

    # 断言assert

    info = {}
    info['name'] = 'kingforn'
    info['age'] = 18

    # if 'name' not in info:
    # raise KeyError('必须有name这个key')
    # if 'age' not in info:
    # raise KeyError('必须有name这个key')

    assert ('name' in info) and ('age' in info)

    if info['name'] == 'kingforn' and info['age'] >10:
    print('welcome')
  • 相关阅读:
    第8章 降维
    第7章 集成学习和随机森林
    JS利用async、await处理少见的登录业务逻辑
    SQL SERVER 实现多行转多列
    Mysql函数----控制流函数介绍
    继承----静态代码快、构造方法、代码块、普通方法的执行顺序
    RBAC----基于角色的访问权限控制
    秋招-----思特沃克视频面试总结
    tomcat启动失败的三种方法
    索引之----mysql联合索引
  • 原文地址:https://www.cnblogs.com/kingforn/p/11362803.html
Copyright © 2020-2023  润新知