• Python异常


    什么是异常?

    异常就是我们因为一些原因而引发的程序错误,也就是我们常说的BUG

    例:

     捕获异常(异常处理)

    我们在程序运行中时,经常会出现异常,因此我们需要对有可能出现的异常进行提前准备,提前处理,在经过异常处理后,我们的程序还能继续运行

    语法:

    try:

        可能出现错误的代码

    except:

        出现错误后执行的代码

    1. try:
    2. #没有aaa.txt文件
    3. #发生错误的代码
    4. f = open("aaa.txt","r",encoding = "UTF-8")
    5. except:
    6. #错误出现时运行的代码
    7. f = open("aaa.txt", "w")

    捕获指定异常

    语法:

    try:

        可能出现错误的代码

    except 指定错误 as e:

        出现错误后执行的代码

    1. try:
    2. f = open("aaaa.txt","r",encoding = "UTF-8")
    3. except FileNotFoundError as e:
    4. f = open("aaaa.txt", "w")

    注意:如果出现的错误类型与指定错误类型不同时将不会捕捉异常

    一般try下只放一行尝试执行的代码

    捕捉多个异常

    try:

        可能出现错误的代码

    except (NameError,FileNotFoundError):

        出现错误后执行的代码

    1. try:
    2. f = open("aaaa.txt","r",encoding = "UTF-8")
    3. except (FileNotFoundError,NameError):
    4. f = open("aaaa.txt", "w")

    捕获所有的异常

    语法:

    try:

        可能出现错误的代码

    except Exception as e:

        出现错误后执行的代码

    1. try:
    2. f = open("aaaa.txt","r",encoding = "UTF-8")
    3. except Exception as e:
    4. f = open("aaaa.txt", "w")

    异常else

    else表示的没有异常时要执行的代码

    语法:

    try:

        可能出现错误的代码

    except Exception as e:

        出现错误后执行的代码

    else:

        没有异常时执行的代码

    1. try:
    2. f = open("aaaa.txt","r",encoding = "UTF-8")
    3. except Exception as e:
    4. f = open("aaaa.txt", "w")
    5. else:
    6. print("现在没有异常")

    现在没有异常

    异常finally

    finally表示的是否异常都要执行的代码

    try:

        可能出现错误的代码

    except Exception as e:

        出现错误后执行的代码

    else:

        没有异常时执行的代码

    finally:

        最后一定执行的代码

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

    异常的传递性

    异常具有传递性

    例:

    1. def demo1():
    2. print("demo1 start")
    3. num = 1/0
    4. print("demo1 end")
    5. def demo2():
    6. print("demo2 start")
    7. demo1()
    8. print("demo2 end")
    9. def demo3():
    10. print("demo3 start")
    11. demo2()
    12. print("demo3 end")
    13. def test():
    14. try:
    15. demo3()
    16. except Exception as e:
    17. print("异常为:"+str(e))
    18. test()

    demo3 start
    demo2 start
    demo1 start
    异常为:division by zero

    当我们想要捕获异常时,并不需要找到出现异常的那句话,因为函数之间的调用关系会导致异常传递

  • 相关阅读:
    CH57x/CH58x/CH59x主从机主动发起断连
    做视频素材资源(free视频,音频,图片)
    选择适合变更管理的产品开发工具的要点和建议
    解析几何:计算两条线段的交点
    【软件测试】使用边界值分析法和等价类划分法计算佣金
    【gzoj1081】k上升段【DP】
    C++ 实现2048小游戏
    思科Nexus 9000系列交换机光模块解决方案
    Spring AOP:面向切面编程在实际项目中的应用
    计算机专业毕业论文安卓毕业设计源码基于Uniapp+Springboot实现的患者服药提醒APP[包运行成功]
  • 原文地址:https://blog.csdn.net/Thewei666/article/details/126716520