• py19_初识 Python 异常处理的简单总结


    ##################################################

    目录

    活动简介

    初识 Python 异常

    异常与抛出异常概念

    捕获异常

    示例程序 —— 接收数字却输入字母

    捕获错误类型

    示例程序 —— 零除错误

    如何捕获程序未知错误?

    else 正常执行与 finally 异常执行


    ##################################################

    活动简介

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…

    欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!

    ##################################################

    初识 Python 异常

    ——————————

    异常与抛出异常概念

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

            程序停止解释执行并且提示错误信息 这个动作我们称之为 抛出/raise 异常

            程序运行时如果遇到错误就会抛出异常

            程序开发中很难将所有的特殊情况都处理的面面俱到

            而通过异常捕获可以针对突发事件做集中的处理 达到保证程序的稳定性和健壮性的目的

    ——————————

    捕获异常

            如果对某些代码的执行不能确定是否正确 可以增加 try/尝试 语句来试图捕获异常

    try 表示尝试 后面编写要尝试的代码 即不确定是否能够正常执行的代码
        except 如果不是 则在后面编写尝试失败的代码

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

    1. try:
    2. # 尝试执行的代码
    3. except:
    4. # 出现错误的处理

    %%%%%

    示例程序 —— 接收数字却输入字母

            示例 要求输入数字的时候输入字母 会异常 如果被捕捉到就会执行我们安排好的错误处理代码:

    1. >>> try:
    2. ... num = int ( input("请输入数字 <<< ") )
    3. ... except:
    4. ... print ( "请输入正确的数字.." )
    5. ...
    6. 请输入数字 <<< a
    7. 请输入正确的数字..
    8. >>> try:
    9. ... num = int ( input("请输入数字 <<< ") )
    10. ... except:
    11. ... print ( "请输入正确的数字.." )
    12. ...
    13. 请输入数字 <<< 521
    14. >>>

            如果没有异常处理就会报错:

    1. >>> num = int ( input("请输入数字 <<< ") )
    2. 请输入数字 <<< a
    3. Traceback (most recent call last):
    4. File "", line 1, in
    5. ValueError: invalid literal for int() with base 10: 'a'
    6. >>>

    ——————————

    捕获错误类型

            在程序执行时 可能会遇到不同类型的异常 并且需要针对不同类型的异常做出不同的响应

            这个时候就需要捕获错误类型 根据不同的错误类型执行不同的处理 语法如下:

    1. try:
    2. # 尝试执行的代码
    3. except 错误类型_1:
    4. # 错误类型_1 的对应代码处理
    5. except (错误类型_2, 错误类型_3):
    6. # 错误类型_2 和 错误类型_3 的对应代码处理
    7. except Exception as result:
    8. # 未知异常
    9. print ( "未知错误 [%s]" % result )

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

    %%%%%

    示例程序 —— 零除错误

            VSCode code:

    1. try:
    2. num = int ( input ( "请输入整数 <<< " ) )
    3. result = 1314 / num
    4. print ( result )
    5. except ValueError:
    6. print ( "请输入正确的整数!!!" )
    7. except ZeroDivisionError:
    8. print ( "零除错误..." )

            VSCode demo:

    1. Windows PowerShell
    2. 版权所有 (C) 2014 Microsoft Corporation。保留所有权利。
    3. PS C:\Users\byme> python -u "e:\PY\test.py"
    4. 请输入整数 <<< 2
    5. 657.0
    6. PS C:\Users\byme> python -u "e:\PY\test.py"
    7. 请输入整数 <<< A
    8. 请输入正确的整数!!!
    9. PS C:\Users\byme> python -u "e:\PY\test.py"
    10. 请输入整数 <<< 0
    11. 零除错误...
    12. PS C:\Users\byme>

    %%%%%

    如何捕获程序未知错误?

            在开发中如果要预判所有可能出现的错误 还是有一定难度的

            所以如果希望程序无论出现任何错误 都不会因为 Python 解释器抛出异常而被终止

            可以再增加一个 except 结构 语法如下:

    1. except Exception as result:
    2. print ( "..未知错误 >>> [%s]" % result )

            示例如下 VSCode code:

    1. try:
    2. num = int ( input ( "请输入整数 <<< " ) )
    3. result = 1314 / num
    4. print ( result )
    5. except Exception as result:
    6. print ( "..未知错误 >>> [%s]" % result )

            执行如下 VSCode demo:

    1. Windows PowerShell
    2. 版权所有 (C) 2014 Microsoft Corporation。保留所有权利。
    3. PS C:\Users\byme> python -u "e:\PY\test.py"
    4. 请输入整数 <<< 0
    5. ..未知错误 >>> [division by zero]
    6. PS C:\Users\byme>

    ——————————

    else 正常执行与 finally 异常执行

            实际开发中 为了能够处理复杂的异常 通常会有多个异常判断:

    else 块是只有在没有异常时才会执行的代码

    finally 块表示无论是否有异常都会执行该快的代码

            复杂异常处理语法如下:

    1. try:
    2. # 尝试执行的代码
    3. except 错误类型_1:
    4. # 错误类型_1 的对应代码处理
    5. except 错误类型_2:
    6. # 错误类型_2 的对应代码处理
    7. except ( 错误类型_3, 错误类型_4 ):
    8. # 错误类型_3 和 错误类型4 的对应代码处理
    9. except Exception as result:
    10. # 打印未知错误信息
    11. print ( result )
    12. else:
    13. # 没有异常时才会执行的代码
    14. finally:
    15. # 无论是否有异常 都会执行的代码

            示例程序如下 VSCode code:

    1. try:
    2. num = int ( input ( "请输入整数 <<< " ) )
    3. result = 10 / num
    4. print ( result )
    5. except ValueError:
    6. print ( "请输入正确的整数!" )
    7. except ZeroDivisionError:
    8. print ( "除零错误!!" )
    9. except Exception as result:
    10. print ( "未知错误 [%s] !!!" % result )
    11. else:
    12. print ( "正常执行通过.." )
    13. finally:
    14. print ( "执行完毕但是不保证没问题.. ..")

            执行效果如下 VSCode demo:

    1. Windows PowerShell
    2. 版权所有 (C) 2014 Microsoft Corporation。保留所有权利。
    3. PS C:\Users\byme> python -u "e:\PY\test.py"
    4. 请输入整数 <<< 2
    5. 5.0
    6. 正常执行通过..
    7. 执行完毕但是不保证没问题.. ..
    8. PS C:\Users\byme> python -u "e:\PY\test.py"
    9. 请输入整数 <<< a
    10. 请输入正确的整数!
    11. 执行完毕但是不保证没问题.. ..
    12. PS C:\Users\byme> python -u "e:\PY\test.py"
    13. 请输入整数 <<< 0
    14. 除零错误!!
    15. 执行完毕但是不保证没问题.. ..
    16. PS C:\Users\byme>

  • 相关阅读:
    叶酸&适配体修饰DNA纳米载体|CdS纳米颗粒修饰DNA|科研试剂
    开源转闭源后,法院判定:分支使用“100%开源”是虚假宣传
    Linux 最近学习总结
    【C&C++编码规范】
    电梯轴承市场现状及未来发展趋势分析
    枚举类和集合
    【无标题】
    机器学习——线性回归/岭回归/Lasso回归
    Flink源码篇【3】Flink提交流程之logEnvironmentInfo解读
    Stirling-PDF 安装和使用教程
  • 原文地址:https://blog.csdn.net/m0_67268286/article/details/126438151