異常就是程序運行錯誤或者邏輯混亂,返回了錯誤的代碼,為了不讓用戶看到錯誤的代碼,所以需要對異常的代碼進行錯誤處理
出現了異常,程序就不在往下執行。
python捕獲異常 用 try except 語句 如上圖
try 語句中是可能出現異常的代碼
except 語句中是對程序異常的處理 ,可以有多個異常,放在元組中存儲
完整的異常捕獲語句 如下:
try:
有可能出現異常的代碼
except 捕獲的異常名:
處理異常
else:
沒有異常就執行這里的語句,可以不寫
finally:
這個語句塊里的代碼,不管有沒有異常,都會執行 必須執行的代碼可以寫在這里 如 文件關閉
異常的傳遞 :
異常的嵌套 :
函數的嵌套調用try :
#########第一種情況;
########第二種情況 :
自定義異常
通過繼承異常類,就可以自定義異常
可以用raise 語句來觸發(拋出)一個異常。異常或者錯誤對象必須有一個名字,應該繼承Exceprion或者是Error類
class NameInputException(Exception):
#自定義異常類NameInputException,繼承Exception類
def __init__(self,msg):# 一個參數 msg 信息
self.msg=msg
class GenderException(Exception):
#自定義異常類GenderException,繼承Exception類
def init(self,msg): # 一個參數,msg 信息
self.msg=msg
def Input():
try :
name = input('輸入名字:')
if len(name)<3:
#判斷如果輸入的名字長度小于3 拋出異常NameInputException
是一個異常對象(參數)
raise 觸發拋出 不在往下執行
raise NameInputException('長度至少是3 輸入的長度是%s'%len(name))
except NameInputException as ni:
#有自己的捕獲語句,就使用自己的,執行自有的語句處理異常信息
print('NameError 自己捕獲執行 %s'%ni)
else:
gender = input('輸入性別:')
if gender !='男' and gender !='女':
#判斷輸入的性別信息,如果輸入的不是男 或 女 拋出異常GenderException
是一個異常對象,自己沒有捕獲異常的方式,raise 觸發向外拋出異常
raise GenderException('請輸入正常選項:男或女 ,你輸入的是%s'%gender)
#######def main():
try:
Input()
#執行語句,捕獲到拋出的異常 執行處理異常信息的語句
except Exception as ex:
print('genderError 接盤俠 %s 執行'%ex)
main()
一些常見的異常
Exception 基礎異常
ZeroDivisionError 除數為0異常
OverflowError 內存溢出
ImportError 導入模塊異常
NameError 沒有聲明對象
RuntimeError 一般運行時異常
NotImplementedError 未實現方法
SyntaxError 語法錯誤
IOError IO操作異常
...