python 異常處理

異常就是程序運行錯誤或者邏輯混亂,返回了錯誤的代碼,為了不讓用戶看到錯誤的代碼,所以需要對異常的代碼進行錯誤處理

異常.JPG

出現了異常,程序就不在往下執行。

python捕獲異常 用 try except 語句 如上圖
try 語句中是可能出現異常的代碼
except 語句中是對程序異常的處理 ,可以有多個異常,放在元組中存儲

完整的異常捕獲語句 如下:
try:
有可能出現異常的代碼
except 捕獲的異常名:
處理異常
else:
沒有異常就執行這里的語句,可以不寫
finally:
這個語句塊里的代碼,不管有沒有異常,都會執行 必須執行的代碼可以寫在這里 如 文件關閉

異常的傳遞 :

異常的嵌套 :
異常1.JPG
函數的嵌套調用try :

#########第一種情況;

函數異常1.JPG
函數異常結果1.JPG

########第二種情況 :

![函數異常結果.JPG](http://upload-images.jianshu.io/upload_images/6853464-3a1f0f7cb3198fa3.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
自定義異常

通過繼承異常類,就可以自定義異常
可以用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操作異常
...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容