Python学习基础 July Day3
异常处理学习总结
1、标准异常及警告汇总
Tips:
错误(Error)和异常(Exception)的区别在于错误为代码运行前的语法或者逻辑错误,异常为代码运行过程中出现错误导致无法运行。Warning的区别在于存在可能的错误风险,但当前代码运行正常。
2、常用异常语句
2.1) try-except
try:
检测范围
except (异常类型)[as reason]:
出现异常后的处理代码
语句执行规则:
- 首先执行try与except之间的语句,无异常则跳过except语句执行后续语句。
- 出现异常且异常类型与except的异常类型一致时,运行顺序从异常处跳至except语句,执行except子句。
- 出现异常且异常类型与except的异常类型不一致时,运行顺序从异常处跳至上一个try语句。(异常发生传递)
Tips:
- 一个try语句后可接多个except语句,每个except语句的异常类型可不一样,用于处理不同异常。需要注意的是except多个异常的排序问题,从最针对的异常到最通用的异常。
- except后可不接异常类型,代表捕获所有异常,但不能通过except确定异常类型。同理,except可接多个异常类型,代表捕获了其中的某种异常,但无法确定类型。
2.2)try-except-finally
try:
检测范围
except (异常类型)[as reason]:
异常出现后的处理代码
finally:
无论如何都会执行的语句
执行规则:
- try与except执行规则同上
- 无论是否有异常以及try中异常是否与except异常类型一致,均要执行finally子句后进行后续运行。
2.3)try-except-else
try:
检测范围
except (异常类型)[as reason]:
异常出现后的处理代码
else:
无异常时执行代码
tips:
- else语句存在前提为except语句存在。如果是try-else格式,则会出现语法错误。
2.4)raise
raise语句用于给出一个指定异常类型及内容
example:
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by')
3、案例:猜数字游戏
电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,“恭喜你猜到了这个数是…”。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
代码如下:
import random
secret = random.randint(0,100)
print("猜测一个0到100之间的整数")
i = 0
guess = -1
while guess != secret:
i += 1
temp = input("第%s次猜,请输入一个整型数字:"%i)
try:
guess = int(temp)
if guess > secret:
print("太大")
elif guess < secret:
print("太小")
except ValueError:
print("输入无效")
print("恭喜你猜到了这个数是%s"%guess)