1、try ... except ...
我們可以使用try..except
語句來處理異常。我們把通常的語句放在try-塊中,而把我們的錯誤處理語句放在except-塊中。
當試圖讀入乙個使用者輸入時,使用者按下了ctrl + d,python會跑出異常
>>> try:
s = input('請輸入乙個字串:')
except eoferror:
print('\neoferror異常處理:使用者輸入過程產生異常')
當以唯讀的方式開啟乙個不存在檔案的時候會跑出ioerror異常:因此:
#嘗試以唯讀的方式開啟乙個不存在的檔案,並進行異常處理
try:
fp = open('file.txt','r')
except ioerror:
print("異常處理:開啟檔案file.txt失敗")
#嘗試以寫入的方式開啟乙個不存在的檔案,並進行異常處理
try:
fp = open('file.txt','w')
#列印乙個沒有定義的變數,跑出nameerror異常
print(name)
except ioerror:
print("異常處理:開啟檔案file.txt失敗")
except nameerror:
print('異常處理:變數name沒有定義')
#在捕獲的異常中處理
name = 'jiezhj'
#寫入一行
fp.write(name + '\n')
fp.write(name)
fp.write(name)
fp.write(name)
fp.close()
異常的丟擲機制:1、如果在執行時發生異常,直譯器會查詢相應的處理語句(稱為handler).
2、要是在當前函式裡沒有找到的話,它會將異常傳遞給上層的呼叫函式,看看那裡能不能處理。
3、如果在最外層(全域性「main」
)還是沒有找到的話,直譯器就會退出,同時列印出
traceback
以便讓使用者找到錯誤產生的原因。
#filename : except.py
#定義乙個方法用於開啟檔案
def func(filename):
try:
#以唯讀的方式開啟檔案filename
fp = open(filename,'r')
except nameerror:
print('異常處理:函式內部異常')
except ioerror:
print('func異常處理:檔案hello.txt開啟錯誤!')
#定義乙個方法用於呼叫方法func
def callfunc():
try:
#傳遞檔名
func('hello.txt')
except ioerror:
print('callfunc異常處理:檔案hello.txt開啟錯誤!')
callfunc()
異常被func方法中的except截獲:
將方法func中的異常處理注釋掉之後,異常會向呼叫方法func的函式中丟擲
#filename : except.py
#定義乙個方法用於開啟檔案
def func(filename):
try:
#以唯讀的方式開啟檔案filename
fp = open(filename,'r')
except nameerror:
print('異常處理:函式內部異常')
#將fun中的異常處理注釋掉
# except ioerror:
# print('func異常處理:檔案hello.txt開啟錯誤!')
#定義乙個方法用於呼叫方法func
def callfunc():
try:
#傳遞檔名
func('hello.txt')
except ioerror:
print('callfunc異常處理:檔案hello.txt開啟錯誤!')
讓try..catch
塊關聯上乙個else
從句。當沒有異常發生的時候,else
從句將被執行。
Python學習 異常處理
assertionerror 斷言語句失敗 assertionerror 斷言語句失敗,一般是在測試程式時置入檢查點 my list love my list.pop assert len my list 0 traceback most recent call last file line 1,i...
python學習 異常處理
class myerror exception definit self,msg self.msg msg defstr self return str self.msg 777 try 檢測try語句塊中的錯誤 print 2 0 raise myerror 主動丟擲錯誤 except myerr...
python學習 異常處理
這次的學習內容是異常處理,簡單的說就是python內建了異常檢測機制,能夠識別出類似除數為0 開啟檔案失敗這一類錯誤。因此,就可以用try except 對可能出現的錯誤進行預判,從而讓程式避開錯誤段繼續執行下去。這篇blog不準備列舉各種異常型別 它們將作為 try except 中except後...