异常处理的实际例子

用户输入

想象一下,你希望用户通过 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