异常处理
异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
Python的标准异常种类较多,异常体系内部有层次关系,Python异常体系中的部分关系如下所示:
try-except语句
try:
# 检测范围
except Exception[as reason]:
# 出现异常后的处理代码
try 语句按照如下方式工作:
- 首先,执行try子句(在关键字try和关键字except之间的语句)
- 如果没有异常发生,忽略except子句,try子句执行后结束。
- 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
- 如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
try - except - finally 语句
不管try子句里面有没有发生异常,finally子句都会执行。
如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。
try - except - else语句
如果在try子句执行时没有发生异常,Python将执行else语句后的语句。
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
raise语句
Python 使用raise语句抛出一个指定的异常。
练习题
猜数字游戏
题目描述:
电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,“恭喜你猜到了这个数是…”。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
(尝试使用try catch异常处理结构对输入情况进行处理)
获取随机数采用random模块。
import random
print("猜测一个0到100之间的整数")
a = random.randint(0,100)
time = 1
while(1):
print("第{}次猜,请输入一个整形数字:".format(time))
try:
b = int(input())
if a==b:
print("恭喜你猜到了这个数是{}".format(a))
break
if b>a:
print("太大")
if b<a:
print("太小")
time += 1
except ValueError:
print("输入无效")
time += 1
continue