Python基礎學習篇 異常處理機制

2021-06-27 19:40:09 字數 2780 閱讀 7701

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。

下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤:

>>> print 'hello world'

file "", line 1

print 'hello world'

^syntaxerror: invalid syntax

>>> print 'hello world'

hello world

1、try...except語句

try...except語句可以用於捕捉並處理錯誤。通常的語句放在try塊中,錯誤處理語句放在except塊中。示例如下:

#!/usr/bin/python

# filename: try_except.py

import sys

try:

s = raw_input('enter something --> ')

except eoferror:#處理eoferror型別的異常

print '/nwhy did you do an eof on me?'

sys.exit() # 退出程式

except:#處理其它的異常

print '/nsome error/exception occurred.'

print 'done'

執行輸出如下:

$ python try_except.py

enter something -->

why did you do an eof on me?

$ python try_except.py

enter something --> python is exceptional!

done

說明:每個try語句都必須有至少乙個except語句。如果有乙個異常程式沒有處理,那麼python將呼叫預設的處理器處理,並終止程式且給出提示。

2、引發異常

你可以用raise語句來引發乙個異常。異常/錯誤物件必須有乙個名字,且它們應是error或exception類的子類。

下面是乙個引發異常的例子:

#!/usr/bin/python

#檔名: raising.py

class shortinputexception(exception):

'''你定義的異常類。'''

def __init__(self, length, atleast):

exception.__init__(self)

self.length = length

self.atleast = atleast

try:

s = raw_input('請輸入 --> ')

if len(s) < 3:

raise shortinputexception(len(s), 3)

# raise引發乙個你定義的異常

except eoferror:

print '/n你輸入了乙個結束標記eof'

except shortinputexception, x:#x這個變數被繫結到了錯誤的例項

print 'shortinputexception: 輸入的長度是 %d, /

長度至少應是 %d' % (x.length, x.atleast)

else:

print '沒有異常發生.'

執行輸出如下:

$ python raising.py

請輸入 -->

你輸入了乙個結束標記eof

$ python raising.py

請輸入 --> --> ab

shortinputexception: 輸入的長度是 2, 長度至少應是 3

$ python raising.py

請輸入 --> abc

沒有異常發生.

3、try...finally語句

當你正在讀檔案或還未關閉檔案時發生了異常該怎麼辦呢?你應該使用try...finally語句以釋放資源。示例如下:

#!/usr/bin/python

# filename: finally.py

import time

try:

f = file('poem.txt')

while true: # 讀檔案的一般方法

line = f.readline()

if len(line) == 0:

break

time.sleep(2)#每隔兩秒輸出一行

print line,

finally:

f.close()

print 'cleaning up...closed the file'

執行輸出如下:

$ python finally.py

programming is fun

when the work is done

cleaning up...closed the file

traceback (most recent call last):

file "finally.py", line 12, in ?

time.sleep(2)

keyboardinterrupt

說明:我們在兩秒這段時間內按下了ctrl-c,這將產生乙個keyboardinterrupt異常,我們並沒有處理這個異常,那麼python將呼叫預設的處理器,並終止程式,在程式終止之前,finally塊中的語句將執行。

python學習 基礎 異常處理

如 try code 可能出現異常需要保護的語句 可以是多行 except 冒號前可以加具體的error名稱,來排除具體的異常,如valueerror pass 如果出現乙個執行時錯誤,或執行這個語句 無論執行時發生了什麼,try語句會捕獲所有異常並處理,用pass忽略掉這個錯誤 1 try 2pr...

python 基礎篇 錯誤和異常處理

所謂語法錯誤,也就是你寫的 不符合程式設計規範,無法被識別與執行,比如下面這個例子 if name is not none print name if 語句漏掉了冒號,不符合 python 的語法規範,所以程式就會報錯invalid syntax。異常則是指程式的語法正確,也可以被執行,但在執行過程...

Python基礎學習之異常處理

編寫程式時,如果遇到異常,且沒有被處理,那麼程式自動結束而不會執行後面的 塊。在io輸入輸出,運算時或者多執行緒處理常會遇到異常,這時需要對其進行預處理,異常也是乙個物件。異常處理 基本框架為 try 正常執行,可能遇到錯誤的 塊 except exceptional exception2 exce...