• 【Python】-- 异常(捕获指定异常、常见异常类型)


    什么是异常?

    程序运行的过程中出现了错误。

    捕获异常?

    提前在某处会发生异常的地方做好提前准备,当出现异常时有处理方法。


    一、基本语法

    try:可能发生错误的代码

    except:如果出现异常要执行的代码

    例:

    1. try:
    2. f = open("d:1.txt","r",encoding="UTF-8")
    3. except:
    4. print("出现异常")
    5. f = open("d:1.txt","w",encoding="UTF-8")

    二、捕获指定的异常

    常见异常类型

    AssertionError    断言语句失败(assert 后的条件为假)

    AttributeError    访问的对象属性不存在

    ImportError    无法导入模块或者对象,主要是路径有误或名称错误    

    IndentationError 代码没有正确对齐,主要是缩进错误

    IndexError    下标索引超出序列范围

    IOError        输入/输出异常,主要是无法打开文件

    KeyError    访问字典里不存在的键

    NameError     访问一个未声明的变量

    OverflowError    数值运算超出最大限制

    SyntaxError    python语法错误

    TabError    Tab和空格混用

    TypeError    不同类型数据之间的无效操作(传入对象类型与要求的不符合)

    ValueError    传入无效的值,即使值的类型是正确的

    ZeroDivisionError    除法运算中除数0 或者 取模运算中模数为0

    例:

    1. try:
    2. print(name)
    3. except NameError as e:
    4. print("出现变量未定义异常")
    5. print(e)

    结果:

    出现变量未定义异常
    name 'name' is not defined

    三、捕获多个异常

    使用元组方式。

    例:

    1. try:
    2. 1/0
    3. # print(name)
    4. except (NameError,ZeroDivisionError) as e:
    5. print("出现变量未定义或除以0的异常")
    6. print(e)

    结果:

    出现变量未定义或除以0的异常
    division by zero

    四、捕获所有异常

    例:

    1. try:
    2. print(name)
    3. except Exception as e:
    4. print("出现异常")
    5. print(e)

    五、异常else

    else表示如果没有异常要执行的代码。

    例:

    1. try:
    2. print(1)
    3. except Exception as e:
    4. print(e)
    5. else:
    6. print("没有异常")

    六、异常finally

    finally表示无论是否异常都要执行的代码,如关闭文件。

    例:

    1. try:
    2. f = open("d:1.txt","r")
    3. except Exception as e:
    4. f = open("d:1.txt","w")
    5. else:
    6. print("没有异常")
    7. finally:
    8. f.close()

    七、异常的传递性

    当所有函数都没有捕获异常的时候,程序会报错。

    例:

    1. def fun1():
    2. num = 1/0
    3. def fun2():
    4. fun1()
    5. def main():
    6. try:
    7. fun2()
    8. except Exception as e:
    9. print(f"出现异常,信息:{e}")
    10. main()

  • 相关阅读:
    CF1000F One Occurrence
    RabbitMQ真实生产故障问题还原与分析
    【C++多线程那些事儿】多线程的执行顺序如你预期吗?
    《昇思25天学习打卡营第15天|Vision Transformer图像分类》
    tiup cluster upgrade
    如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?
    2021 增强式学习RL 李宏毅
    基于灰色神经网络的预测算法——订单需求预测
    “元宇宙”虚拟世界的营销法则 “品牌元宇宙空间”算什么?
    【数据结构】链表--单链表
  • 原文地址:https://blog.csdn.net/Tir_zhang/article/details/126719084