<h3>1. 遇到的常見的異常:</h3>
SyntaxError 語法錯誤
NameError 未聲明/初始化對象
TypeError 對類型無效的操作
KeyError 字典中查找不存在的鍵
IOError 輸入/輸出操作失敗
IndexError 序列中沒有此索引
ImportError 導入模塊/對象失敗
<h3>2. 異常捕抓:</h3>
<h5>try......except</h5>
用來檢測語句中的錯誤,從而讓except語句捕獲異常并處理
try后面接的語句一旦出現(xiàn)異常錯誤后面的語句將不執(zhí)行
<h5>except Error as reason:</h5>
是把異常的原因給reason這個變量
<pre>
-- coding:utf-8 --
try:
f = open('abcdefg','r')
except IOError as reason:
print '文件操作錯誤',reason
輸出:
文件操作錯誤 [Errno 2] No such file or directory: 'abcdefg'
</pre>
<h3>3. 異常處理:</h3>
<h5>try.......finally</h5> finally后面的語句就是無論異常是否發(fā)生都會執(zhí)行的語句
<pre>
-- coding:utf-8 --
try:
f = open('abcdefg','w')
f.write('Hello python')
f.read()
except IOError as reason:
print u'文件操作錯誤',reason
finally:
f.close()
print u'異常處理'
輸出:
文件操作錯誤 File not open for reading
異常處理
</pre>
<h3>4. 觸發(fā)異常:</h3>
<h5>raise[Exception]</h5>
使用raise語句自己觸發(fā)異常,并且raise后面的語句不再執(zhí)行
<pre>
-- coding:utf-8 --
try:
print 123
raise IOError('oooooo')
print 234
except IOError,NameError:
print u'文件操作錯誤',NameError
finally:
print 'python'
輸出:
123
文件操作錯誤 oooooo
python
</pre>
<h3>5. 斷言</h3>
assert條件:用來申明某個條件是真的,如果條件是假的則會跑出AssertionError異常
<pre>
assert 1 > 2
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
assert 1 > 2
AssertionError
assert 1 < 2
</pre>
<h3>6. 示例</h3>
<pre>
-- coding:utf-8 --
try:
filename = 'm.py'
f = open(filename)
except IOError as x:
xx = raw_input(u'文件不存在,是否創(chuàng)建這個文件? (Y/N)')
if xx == 'Y':
f = open(filename,'w+')
print u'已為您創(chuàng)建了文件 %s現(xiàn)在可以對f文件對象進行讀寫的操作' % filename
finally:
f.close()
輸出:
文件不存在,是否創(chuàng)建這個文件? (Y/N)Y
已為您創(chuàng)建了文件 m.py現(xiàn)在可以對f文件對象進行讀寫的操作
</pre>