• 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

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

  • 相关阅读:
    面试突击84:Spring 有几种事务隔离级别?
    SeaTunnel扩展Transform插件,自定义转换插件
    NXP恩智浦 S32G电源管理芯片 VR5510 安全概念 Safety Concept (万字长文详解,配21张彩图)
    一起Talk Android吧(第四百三十一回:Java8中的日期类)
    猿创征文 |【算法面试入门必刷】动态规划-线性dp(三)
    机器学习之特征选择
    verdi fsdb转vcd波形:用于后端功耗分析
    nginx
    Apache Commons IO组件简介说明
    小白自学笔记—网络安全(黑客技术)
  • 原文地址:https://blog.csdn.net/Thewei666/article/details/126716520