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

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

目录

活动简介

初识 Python 异常

异常与抛出异常概念

捕获异常

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

捕获错误类型

示例程序 —— 零除错误

如何捕获程序未知错误?

else 正常执行与 finally 异常执行


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

活动简介

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

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

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

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

初识 Python 异常

——————————

异常与抛出异常概念

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

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

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

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

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

——————————

捕获异常

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

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

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

try:
	# 尝试执行的代码
except:
	# 出现错误的处理

%%%%%

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

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

>>> try:
...     num = int ( input("请输入数字 <<< ") )
... except:
...     print ( "请输入正确的数字.." )
...
请输入数字 <<< a
请输入正确的数字..
>>> try:
...     num = int ( input("请输入数字 <<< ") )
... except:
...     print ( "请输入正确的数字.." )
...
请输入数字 <<< 521
>>> 

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

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

——————————

捕获错误类型

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

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

try:
    # 尝试执行的代码

except 错误类型_1:
    # 错误类型_1 的对应代码处理

except (错误类型_2, 错误类型_3):
    # 错误类型_2 和 错误类型_3 的对应代码处理

except Exception as result:
    # 未知异常
    print ( "未知错误 [%s]" % result )

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

%%%%%

示例程序 —— 零除错误

        VSCode code:

try:
    num = int ( input ( "请输入整数 <<< " ) )
    result = 1314 / num
    print ( result )

except ValueError:
    print ( "请输入正确的整数!!!" )

except ZeroDivisionError:
    print ( "零除错误..." )

        VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< 2
657.0
PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< A
请输入正确的整数!!!
PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< 0
零除错误...
PS C:\Users\byme> 

%%%%%

如何捕获程序未知错误?

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

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

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

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

        示例如下 VSCode code:

try:
    num = int ( input ( "请输入整数 <<< " ) )
    result = 1314 / num
    print ( result )

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

        执行如下 VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< 0
..未知错误 >>> [division by zero]
PS C:\Users\byme> 

——————————

else 正常执行与 finally 异常执行

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

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

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

        复杂异常处理语法如下:

try:
    # 尝试执行的代码
except 错误类型_1:
    # 错误类型_1 的对应代码处理
except 错误类型_2:
    # 错误类型_2 的对应代码处理
except ( 错误类型_3, 错误类型_4 ):
    # 错误类型_3 和 错误类型4 的对应代码处理
except Exception as result:
    # 打印未知错误信息
    print ( result )
else:
    # 没有异常时才会执行的代码
finally:
    # 无论是否有异常 都会执行的代码

        示例程序如下 VSCode code:

try:
    num = int ( input ( "请输入整数 <<< " ) )
    result = 10 / num
    print ( result )

except ValueError:
    print ( "请输入正确的整数!" )

except ZeroDivisionError:
    print ( "除零错误!!" )

except Exception as result:
    print ( "未知错误 [%s] !!!" % result )

else:
    print ( "正常执行通过.." )

finally:
    print ( "执行完毕但是不保证没问题.. ..")

        执行效果如下 VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< 2
5.0
正常执行通过..
执行完毕但是不保证没问题.. ..
PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< a
请输入正确的整数!
执行完毕但是不保证没问题.. ..
PS C:\Users\byme> python -u "e:\PY\test.py"
请输入整数 <<< 0
除零错误!!
执行完毕但是不保证没问题.. ..
PS C:\Users\byme> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值