當你的程式中出現某些 異常的 狀況的時候,異常就發生了。例如,當你想要讀某個檔案的時候,而那個檔案不存在。或者在程式啟動並執行時候,你不小心把它刪除了。上述這些情況可以使用異常來處理。
假如你的程式中有一些無效的語句,會怎麼樣呢?Python會引發並告訴你那裡有一個錯誤,從而處理這樣的情況。
錯誤
考慮一個簡單的print語句。假如我們把print誤拼為Print,注意大寫,這樣Python會 引發 一個語法錯誤。
>>> Print 'Hello World'
File "<stdin>", line 1
Print 'Hello World'
^
SyntaxError: invalid syntax
>>> print 'Hello World'
Hello World
我們可以觀察到有一個SyntaxError被引發,並且檢測到的錯誤位置也被列印了出來。這是這個錯誤的 錯誤處理器 所做的工作。
try..except
我們嘗試讀取使用者的一段輸入。按Ctrl-d,看一下會發生什麼。
>>> s = raw_input('Enter something --> ')
Enter something --> Traceback (most recent call last):
File "<stdin>", line 1, in ?
EOFError
Python引發了一個稱為EOFError的錯誤,這個錯誤基本上意味著它發現一個不期望的 檔案尾 (由Ctrl-d表示)
接下來,我們將學習如何處理這樣的錯誤。
處理異常
我們可以使用try..except語句來處理異常。我們把通常的語句放在try-塊中,而把我們的錯誤處理語句放在except-塊中。
例13.1 處理異常
#!/usr/bin/python
# Filename: try_except.py
import sys
try:
s = raw_input('Enter something --> ')
except EOFError:
print '\nWhy did you do an EOF on me?'
sys.exit() # exit the program
except:
print '\nSome error/exception occurred.'
# here, we are not exiting the program
print 'Done'
(源檔案:code/try_except.py)
輸出
$ python try_except.py
Enter something -->
Why did you do an EOF on me?
$ python try_except.py
Enter something --> Python is exceptional!
Done