Python基础Task3:异常处理
1.try-except语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
【例子】
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
try 语句按照如下方式工作:
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。
【例子】
try:
int("abc")
s = 1 + '1'
f = open('test.txt')
print(f.read())
f.close()
except OSError as error:
print('打开文件出错
原因是:' + str(error))
except TypeError as error:
print('类型出错
原因是:' + str(error))
except ValueError as error:
print('数值出错
原因是:' + str(error))
# 数值出错
# 原因是:invalid literal for int() with base 10: 'abc'
2. try - except - finally 语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码
如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。
3.try - except - else 语句
如果在try子句执行时没有发生异常,Python将执行else语句后的语句。
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
注意:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。
4.raise语句
Python 使用raise语句抛出一个指定的异常。
【例子】
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
#An exception flew by!
3.练习题:猜数字
题目描述:
电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,"恭喜你猜到了这个数是......"。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。
(尝试使用try catch异常处理结构对输入情况进行处理)
获取随机数采用random模块。
import random
count=1
x=random.randint(0,100)
print("猜测一个0到100之间的整数:
")
while True:
try:
m = input("这是第%d次猜,请输入一个整数:
" % count)
m1=int(m)
if m1>x:
print("太大")
count +=1
#continue
elif m1<x:
print("太小")
count += 1
#continue
else:
print("恭喜你猜对了!")
count=1
x=random.randint(0,100)
print("猜测一个0到100之间的整数:
")
except ValueError as error:
print("输入的不是数字" + str(error))
print("请输入一个0到100之间的整数")