• Python异常「1」(异常的概念、异常捕获、异常的传递、自定义异常)


    欢迎关注博主 python老鸟 或 前往 『Python自学网』, 从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。


    免费专栏传送门:《Python基础教程


    目录

    一、异常的概念

    二、捕获异常

    2.1)简单的捕获异常语法

    2.1.1捕获异常最简单的语法格式:

    2.1.2简单异常捕获演练:

    2.2)错误类型捕获

    2.2.1语法:

    2.2.2异常类型捕获演练:

    2.2.3 捕获未知错误

    2.3)异常捕获的完整语法


    一、异常的概念

    程序运行时,如果Python解释器遇到一个错误,会停止程序的执行并且提示一些错误信息,这就是异常

    程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出异常

    程序开发时,很难把所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性。(健壮:可以理解为功能强大)


    二、捕获异常

    2.1)简单的捕获异常语法

    在程序开发中,如果对某些代码的执行不确定是否正确,可以增加try来捕获异常。

    2.1.1捕获异常最简单的语法格式:

    1. try:
    2. 尝试执行的代码
    3. except:
    4. 出现错误的处理
    1. try尝试。下方编写要尝试的代码,不确定是否能正常执行的代码
    2. except如果不是。下方编写尝试失败的代码

    2.1.2简单异常捕获演练:

    需求:要求用户输入整数

    代码:

    1. try:
    2. # 不能确定是否正确的执行代码
    3. num = int(input("请输入一个整数:"))
    4. except:
    5. # 错误的处理代码
    6. print("请输入正确的整数")
    7. print("+" * 30)

    执行结果:当输入数字正确

    执行结果:当输入数字不正确

    2.2)错误类型捕获

    在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常做出不同的响应,这个时候就需要捕获错误类型了。

    当Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型

    如图:

    2.2.1语法:

    1. try:
    2. # 尝试执行的代码
    3. pass
    4. except 错误类型1:
    5. # 针对错误类型1,做出对应的代码处理
    6. pass
    7. except (错误类型2, 错误类型3):
    8. # 针对错误类型2和3,做出对应的代码处理
    9. pass
    10. except Exception as result:
    11. print("未知错误 %s" % result)

    2.2.2异常类型捕获演练:

    需求:

    1. 提示用户输入一个整数
    2. 使用8除以用户输入的帧数并输出

    代码:

    1. # 1.提示用户输入一个整数
    2. num = int(input("输入一个整数"))
    3. # 2.使用8除以用户输入的帧数并输出
    4. result = 8 / num
    5. print(result)

    输入不同,错误提示不同:

    1.输入字母,提示信息:值错误的异常

    2.输入数字0,因为分母不能为0,提示信息:除0错误异常

    针对两种不同错误类型分别给用户不同提示的代码:

    1. try:
    2. # 1.提示用户输入一个整数
    3. num = int(input("输入一个整数"))
    4. # 2.使用8除以用户输入的帧数并输出
    5. result = 8 / num
    6. print(result)
    7. except ValueError:
    8. print("请输入正确的整数")
    9. except ZeroDivisionError:
    10. print("除0错误")

    执行结果:

    2.2.3 捕获未知错误

    在开发时,要预判到所有可能出现的错误还是有一定难度的,如果希望程序无论出现任何错误,都不会因为python解释器抛出异常而被终止,可以再增加一个except。

    语法:

    1. except Exception as result:
    2. print("未知错误 %s" % result)
    1. Exception是python针对异常提供的类
    2. as是一个关键字
    3. result是一个变量名,可以任意修改,,通过这个result就可以访问到被捕获的未知异常

    代码体验:注释掉除0错误,输入0看看是什么提示信息

    1. try:
    2. # 1.提示用户输入一个整数
    3. num = int(input("输入一个整数"))
    4. # 2.使用8除以用户输入的帧数并输出
    5. result = 8 / num
    6. print(result)
    7. except ValueError:
    8. print("请输入正确的整数")
    9. # except ZeroDivisionError:
    10. # print("除0错误")
    11. except Exception as result:
    12. print("未知错误 %s" % result)

    执行结果:

    2.3)异常捕获的完整语法

    在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:

    1. try:
    2. # 尝试执行的代码
    3. pass
    4. except 错误类型1:
    5. # 针对错误类型1,做出对应的代码处理
    6. pass
    7. except 错误类型2:
    8. # 针对错误类型2,做出对应的代码处理
    9. pass
    10. except (错误类型3, 错误类型4):
    11. # 针对错误类型3和4,做出对应的代码处理
    12. pass
    13. except Exception as result:
    14. # 打印错误信息
    15. print(result)
    16. else:
    17. # 没有异常才会执行的代码
    18. pass
    19. finally:
    20. # 无论是否有异常都会执行的代码
    21. print("无论是否有异常都会执行的代码")
    1. else:只有在没有异常时才会执行的代码
    2. finally:无论是否有异常都会执行的代码

    修改上面代码:

    1. try:
    2. # 1.提示用户输入一个整数
    3. num = int(input("输入一个整数"))
    4. # 2.使用8除以用户输入的帧数并输出
    5. result = 8 / num
    6. print(result)
    7. except ValueError:
    8. print("请输入正确的整数")
    9. # except ZeroDivisionError:
    10. # print("除0错误")
    11. except Exception as result:
    12. print("未知错误 %s" % result)
    13. else:
    14. print("尝试成功")
    15. finally:
    16. print("无论是否有异常都会执行的代码")
    17. print("+" * 30)

    输入不同数据执行结果:

  • 相关阅读:
    数据结构五分钟精通 之 正则表达式(Python)
    二叉树:dfs+回溯
    Go构建遇到cgo动态库时解决方案
    L1-035 情人节 c++解法
    二、软件工程——Modeling
    不同字符编码对比
    Prometheus(二)基础概念
    【漏洞分析】Reflection Token 反射型代币攻击事件通用分析思路
    Eureka介绍与使用
    阿里巴巴内部纯享的这份SpringBoot+VUE全栈开发实战手册,绝了
  • 原文地址:https://blog.csdn.net/weixin_48728769/article/details/126894946