• 12.异常、异常处理、断言、推导表达式


             异常         

    异常本身是类的实例

    一、异常

    >>> a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    >>> a === 2
      File "<stdin>", line 1
        a === 2
            ^
    SyntaxError: invalid syntax
    >>> a()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined

    二、Python的异常结构 (基于继承)

    在 Python 中所有的异常都是继承自 BaseException 直接分为四大类:

    1、SystemExit:Python退出异常

    2、KeyboardInterrupt: 键盘打断(Ctrl+C)

    3、GeneratorExit: 生成器退出(下次课再讲)

    4、Exception: 普通异常(只会使用这部分的异常)

    三、错误回溯

         异常处理      

     1、基本的 try … except …

    2、捕获具体的异常捕获多种异常

    3、关于 Exception 及其 子类 的解释

    4、更加丰富的结构

    代码中会出现的异常都是 Exception 的子类, 因此在 except 中只需要在最后加上 Exception 即可

    在捕获异常的过程中,会从上倒下依次对比异常,找到之后就不会再往后查找

    try:
        print("-------------1------------")    #有可能出错的代码
        print(c)
        print("------------2-------------")
    except NameError as info:   #在这里用as 将捕获到的异常 用一个变量保存
        print("捕获到了异常,会执行我下面的代码对异常进行处理")
        print(info)  #把捕获的信息返回出去
    else:
        print("没有捕获到异常执行我")
    finally:
        print("不管有没有异常都会执行我")
    
    # 注意事项:
    # 1. try       下面放可能出错的代码
    # 2. except  try下面的代码出错后,会执行except下面的代码
    # 3. else      try下面代码没有错误,执行else下面的代码
    # 4. finally 不管try下面的代码有没有出错,始终都会执行
    
    -------------1------------
    捕获到了异常,会执行我下面的代码对异常进行处理
    name 'c' is not defined
    不管有没有异常都会执行我

    5、扩展(自定义异常类型)

    class MyError(Exception):    #自定义异常必须继承于Exception
        pass
    raise MyError 
    
    
    try:
        raise NameError          #主动抛出异常
    except NameError:
        print("报错了")
    #raise 主动抛出异常
    # 格式:raise 异常类型
    # 注意:raise  是主动抛出后面写的异常类型

             断言         assert

    assert 1 == 1      #条件成立往下运行 条件不成立报错
    print("======================")
    
    # 断言语句是将调试断言插入程序的一种便捷方式
    # assert 的语法规则是:
    # 表达式返回 True  不报错
    # 表达式返回 False  报错  报 AssertionError     #断言错误

        推导表达式    

     一、列表推导

    二、集合和字典推导

  • 相关阅读:
    jquery ui draggable,droppable 学习总结
    VSCode设置网页代码实时预览
    ionic3-修改APP应用图标(icon)和APP启动界面(Splash)
    Ionic3页面的生命周期
    videogular2 在ionic3项目里报错(rxjs_1.fromEvent is not a function)
    IDEA的maven项目的netty包的导入(其他jar同)
    maven的安装与项目的创建
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
    使用二分法查询二维整型数组的值(找到返回其坐标)
    乐观锁以及悲观锁
  • 原文地址:https://www.cnblogs.com/lyh-520/p/9306346.html
Copyright © 2020-2023  润新知