異常處理的實際例子

使用者輸入

想象一下,你希望使用者通過 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