在python中,用try来测试可能出现异常的语句,然后用except来处理可能出现的异常,try except的表达形式如下:
try:
语句
except [exception,[data...]]:
Do something
except [exception,[data...]]:
Do something
except [exception,[data...]]:
Do something
意思是,尝试执行语句,如果出现某个异常则怎么做,因为同一个语句可能出现不同的异常,所以也会给出不同的解决方法,另外try还可以配合else,finally语句一起使用,不过这种情况比较少
以常见的输入数据异常为例,编写一个testtryinput.py实验一下,代码如下
# coding: utf-8
__author__ = 'www.py3study.com'
class tryinput(object):
def __init__(self):
self.len = 10
self.numlist = self.createlist()
self.getnum()
def createlist(self):
print(u"创建一个长度为{}的数字列表".format(self.len))
numL = []
while len(numL) < 10:
n = input("请输入一个整数:")
try:
num = int(n)
except ValueError:
print(u"输入错误,要求输入一个整数")
continue
numL.append(num)
print(u"现在的列表为:")
print(numL)
return numL
def getnum(self):
print(u"当前列表为:")
print(self.numlist)
instr = None
while instr != 'EXIT':
print(u"输入EXIT退出程序")
instr = input("输入列表下标[-10,9]:")
try:
index = int(instr)
num = self.numlist[index]
print(u"列表中下标为{}的值为{}".format(index, num))
except ValueError:
print(u"输入有误,列表下标是一个整数")
continue
except IndexError:
print(u"下标太大,访问列表超出范围")
continue
if __name__ == '__main__':
tl = tryinput()
应该看到的结果
"C:\Program Files (x86)\python3.6\python.exe" D:/python3_study/test_tryinput.py
创建一个长度为10的数字列表
请输入一个整数:x
输入错误,要求输入一个整数
请输入一个整数:1
现在的列表为:
[1]
请输入一个整数:2
现在的列表为:
[1, 2]
请输入一个整数:3
现在的列表为:
[1, 2, 3]
请输入一个整数:4
现在的列表为:
[1, 2, 3, 4]
请输入一个整数:5
现在的列表为:
[1, 2, 3, 4, 5]
请输入一个整数:6
现在的列表为:
[1, 2, 3, 4, 5, 6]
请输入一个整数:7
现在的列表为:
[1, 2, 3, 4, 5, 6, 7]
请输入一个整数:8
现在的列表为:
[1, 2, 3, 4, 5, 6, 7, 8]
请输入一个整数:9
现在的列表为:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
请输入一个整数:0
现在的列表为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
当前列表为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
输入EXIT退出程序
输入列表下标[-10,9]:a
输入有误,列表下标是一个整数
输入EXIT退出程序
输入列表下标[-10,9]:100
下标太大,访问列表超出范围
输入EXIT退出程序
输入列表下标[-10,9]:8
列表中下标为8的值为9
输入EXIT退出程序
输入列表下标[-10,9]:EXIT
输入有误,列表下标是一个整数
Process finished with exit code 0
这个程序就是针对输入出现的异常和访问列表越界的异常给出了解决方案,在编程过程中总会遇上各种各样的异常,考虑周全一点,思维缜密一点,善用try一点,程序的健壮性就不止强一点点