当前位置 博文首页 > zy010101博客:Python——异常

    zy010101博客:Python——异常

    作者:[db:作者] 时间:2021-06-11 18:09

    python异常

    异常列表

    下表是python的异常列表,我们通常使用Exception即可,它包含了常规错误。

    异常名称描述
    BaseException所有异常的基类
    SystemExit解释器请求退出
    KeyboardInterrupt用户中断执行(通常是输Ctrl+C)
    Exception常规错误的基类
    StopIteration迭代器没有更多的值
    GeneratorExit生成器(generator)发生异常来
    StandardError所有的内建标准异常的基类
    ArithmeticError所有数值计算错误的基类
    FloatingPointError浮点计算错误
    OverflowError数值运算超出最大限制
    ZeroDivisionError除(或取模)零 (所有数据类
    AssertionError断言语句失败
    AttributeError对象没有这个属性
    EOFError没有内建输入,到达EOF 标记
    EnvironmentError操作系统错误的基类
    IOError输入/输出操作失败
    OSError操作系统错误
    WindowsError系统调用失败
    ImportError导入模块/对象失败
    LookupError无效数据查询的基类
    IndexError序列中没有此索引(index)
    KeyError映射中没有这个键
    MemoryError内存溢出错误(对于Python 解释器不
    NameError未声明/初始化对象 (没有属性)
    UnboundLocalError访问未初始化的本地变量
    ReferenceError弱引用(Weak reference)试图
    RuntimeError一般的运行时错误
    NotImplementedError尚未实现的方法
    SyntaxErrorPython 语法错误
    IndentationError缩进错误
    TabErrorTab 和空格混用
    SystemError一般的解释器系统错误
    TypeError对类型无效的操作
    ValueError传入无效的参数
    UnicodeErrorUnicode 相关的错误
    UnicodeDecodeErrorUnicode 解码时的错误
    UnicodeEncodeErrorUnicode 编码时错误
    UnicodeTranslateErrorUnicode 转换时错误
    Warning警告的基类
    DeprecationWarning关于被弃用的特征的警告
    FutureWarning关于构造将来语义会有改变的警告
    OverflowWarning旧的关于自动提升为长整型
    PendingDeprecationWarning关于特性将会被
    RuntimeWarning可疑的运行时行为(runtime
    SyntaxWarning可疑的语法的警告
    UserWarning用户代码生成的警告

    异常

    Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

    异常处理

    python可以使用try-except语句来捕捉异常。例如:

    try:
        result = 3/0
    except Exception as e:
        print(e)
    
    

    这段代码的执行结果是:

    division by zero
    

    解释一下try-except的执行流程。首先,执行try子句,如果没有异常发生,那么except子句将会被忽略。一个try语句可以对应多个except语句,但是最多只有一个except语句被执行。如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。

    多个异常可以放在一起,例如:

    except(UnicodeError, ValueError):
        pass
    
    

    多个异常形成元组。

    try-except语句还有一个可选的else子句,可以放在except后面。else子句在try子句没有发生异常的时候执行。例如:

    try:
        result = 3/2
    except Exception as e:
        print(e)
    else:
        print("OK")
    

    程序执行结果如下:

    OK
    

    python还提供了finally语句,它不管异常是否发生,都会被执行。例如:

    try:
        result = 3/0
    except Exception as e:
        print(e)
    else:
        print("OK")
    finally:
        print("finally")
    

    执行结果如下所示:

    division by zero
    finally
    

    抛出异常

    使用raise语句来抛出一个异常。例如:

    try:
        x = 10
        if x > 5:
            raise Exception("值不能大于5")
    except Exception as e:
        print(e)
    

    执行结果如下:

    值不能大于5
    

    可以看到,抛出的异常可以被成功捕获。