异常处理的实际例子
用户输入
想象一下,你希望用户通过 input
输入数字。你希望确保输入是一个数字。你可以使用 try
/ except
:
Python 3.x >= 3.0
while True:
try:
nb = int(input('Enter a number: '))
break
except ValueError:
print('This is not a number, try again.')
注意:Python 2.x 会使用 raw_input
代替; 函数 input
存在于 Python 2.x 中,但具有不同的语义。在上面的例子中,input
也会接受诸如 2 + 2
之类的表达式,它们会计算出一个数字。
如果输入无法转换为整数,则会引发 ValueError
。你可以用 except
来捕捉它。如果没有异常,break
会跳出循环。循环之后,nb
包含一个整数。
字典
想象一下,你正在迭代一个连续的整数列表,比如 range(n)
,你有一个字典列表 d
,其中包含有关遇到某些特定整数时要做的事情的信息,比如跳过下面的 d[i]
。
d = [{7: 3}, {25: 9}, {38: 5}]
for i in range(len(d)):
do_stuff(i)
try:
dic = d[i]
i += dic[i]
except KeyError:
i += 1
当你尝试从字典中获取不存在的键的值时,将引发 KeyError
。