异常处理的实际例子
用户输入
想象一下,你希望用户通过 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。