1.異常處理
# 異常處理
"""程式錯誤分為兩種:
1.語法錯誤 : **沒有按照python規定的語法去寫,處理不了,重寫
2.異常錯誤 : 在**語法正確的基礎上,程式報錯就是異常錯誤
try...except..
把所有可能錯誤的**放到try**中
如果報錯,執行except**塊
所有異常類的父類 :baseexception
所有普通異常的父類 : exception
"""# 1.基本語法
try:
lst = [1,2,3]
print(lst[4])
except:
print("有錯誤")
# 2.帶有分支的異常處理
try:
lst = [1,2]
print(lst[4])
print(aa)
except indexerror:
print("索引錯誤")
except nameerror:
print("變數不存在")
except:
print("有錯誤")
# 3.stopiteration 捕捉到return返回值
def mygen():
yield 1
yield 2
return 888
gen = mygen()
try:
print(next(gen))
print(next(gen))
print(next(gen))
except stopiteration as e: #給類的物件起別名,e是物件
print(e,type(e)) #888 res = str(e)
print(res,type(res)) #888 res = eval(res)
print(res,type(res)) #888 # 4.其他異常處理寫法
# (1) try...except...else(二選一)
"""總結:
如果**正確,執行else分支
如果**有錯誤,執行except分支
"""try:
lst = [1,2,3]
print(lst[1])
except:
print("有錯誤")
else:
print("**正確")
# (2) try...finally...
"""總結:
無論**是否有錯誤,都執行finally**塊;
應用場景:
比如檔案操作,必須遇到close()才能儲存檔案;一旦出現異常,必須在最後執行一次close()
資料才能儲存到檔案中,把fp.close()**寫在finally**塊中
"""# (3) try ...except ... else ...finally..
print("<***************>")
try:
lst = [1,2,3]
print(lst[4])
except:
print("有異常錯誤")
else:
print("正確**")
finally:
print("無論怎樣,我的必須執行")
2.主動拋異常# 主動拋異常 raise
"""語法:
raise + 異常錯誤類/異常錯誤類物件
所有異常類的父類 :baseexception
所有普通異常的父類 : exception
"""# 1.丟擲系統內建的異常錯誤類
# 簡寫:
try:
raise # runtimeerror
except:
print("出錯了")
# 完整寫法
try:
raise indexerror
except baseexception:
print("666")
# 2.自定義異常錯誤類
"""自定義異常錯誤類必須繼承baseexception,系統才認可"""
def return_errorinfo(n):
import sys
f = sys.exc_info()[2].tb_frame.f_back
if n==1:
return str(f.f_lineno) #返回當前行數
elif n == 2:
return f.f_code.co_filename #返回檔名
def get_info(n):
try:
raise
except:
# 接收錯誤資訊
return return_errorinfo(n)
class myerror(baseexception):
def __init__(self,code,msg,file,line):
self.code = code
self.msg = msg
self.file = file
self.line = line
def info(self):
for i in self.__dict__:
print(self.__dict__[i])
try:
raise myerror(404,"錯誤**",get_info(2),get_info(1))
except myerror as e: #e是myerror的物件
e.info()
19 異常處理
異常 描述assertionerror assert語句失敗 attributeerror 試圖訪問乙個物件沒有的屬性 ioerror 輸入輸出異常,基本是無法開啟檔案 importerror 無法引入模組或者包,基本是路徑問題 indentationerror 語法錯誤,沒有正確的對齊 index...
python 19 異常處理
什麼是異常處理?對於使用者輸入,不想讓使用者看見出錯資訊,對異常進行處理 異常處理的框架是什麼?try 可能出錯的程式1 可能出錯的程式2 程式1出錯了,不在執行程式2 except 錯誤 as e e接收出錯的值,想抓多個錯誤 錯誤1,錯誤2,建議用單獨乙個錯誤,多個錯誤處理原則上是統一處理錯誤。...
小白學 Python(19) 基礎異常處理
人生苦短,我選python 前文傳送門 小白學 python 1 開篇 小白學 python 2 基礎資料型別 上 小白學 python 3 基礎資料型別 下 小白學 python 4 變數基礎操作 小白學 python 5 基礎運算子 上 小白學 python 6 基礎運算子 下 小白學 pyth...