程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

代碼示例:5分鐘徹底搞定python異常處理

編輯:Python

來源:AI有溫度

大家好,我是陽哥。

異常處理在工程文件中必不可少,今天就帶大家徹底搞定異常處理。

異常處理

python中我們使用tryexcept關鍵字來捕獲異常:

  • try下寫:不確定能不能正常執行的代碼

  • except下寫:如果try下的代碼執行失敗時要執行的代碼

例1

要求用戶輸入整數:

try:
    # 不確定能不能正常執行的代碼
    num = int(input("請輸入一個數字:"))
except:
    #  如果try下的代碼執行失敗時要執行的代碼
    print("請輸入一個正確的數字!")
    
輸入:`z`
輸出:請輸入一個正確的數字!

錯誤類型捕獲

在程序執行時,可能會報不同的錯誤。如果需要針對不同類型的異常做出不同的響應,就需要指定錯誤類型了:

try:
    #嘗試執行的代碼
    pass
except 錯誤類型1:
    #針對錯誤類型1,對應的代碼處理
    pass
except(錯誤類型2,錯誤類型3):
    #針對錯誤類型2和3對應的代碼處理
    pass
except Exception as result:
    # 除了123之外的錯誤 
    print("未知錯誤 %s" %result)

例2

提示用戶輸入一個整數,使用8除以用戶輸入的整數並且輸出:

while True:
    try:
        # 提示用戶輸入一個整數
        num = int(input("輸入一個整數:"))
        # 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常
        result = 8 / num
        print(result)
    except ZeroDivisionError:
        print("錯誤,除數不能為0")
    except ValueError:
        print("請輸入數字")
    # 捕獲未知錯誤
    except Exception as result:
        print("未知錯誤 %s" %result)

異常捕獲中,也可以使用elsefinally關鍵字:

  • else:沒異常會執行的代碼

  • finally:無論是否有異常,都會執行的代碼

例3

異常捕獲的完整語法:

try:
    # 提示用戶輸入一個整數
    num = int(input("輸入一個整數:"))
    # 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常
    result = 8 / num
    print(result)
except ValueError:
    print("請輸入數字")
except Exception as result:
    print("未知錯誤%s" % result)
else:
    print("嘗試成功!")
finally:
    print("無論是否出現錯誤都會執行的代碼")
    
輸入:`z`
輸出:請輸入數字
輸出:無論是否出現錯誤都會執行的代碼

異常的傳遞

從產生異常的地方開始傳遞到調用異常的地方,如果一直沒有處理異常,就會一直傳遞到主函數,然後停止程序並報出異常信息。

例4

def demo1():
    return int(input("請輸入一個整數:"))
def demo2():
    return demo1()
print(demo2())
輸入:`z`

報錯信息會一直傳遞到主程序,然後停止:

所以說,只需要在主程序中做一個異常處理就可以完成代碼的異常處理。

def demo1():
    return int(input("輸入整數:"))
def demo2():
    return demo1()
    
#利用異常的傳遞性,在主程序捕獲異常
try:
    print(demo2())
except Exception as result:
    print("程序出現了%s錯誤"%(result))

主動拋出異常raise

python中提供了Exception異常類。在開發時,如果滿足特定業務的需求希望拋出異常時,可以創建一個Exception的對象,使用raise關鍵字拋出異常對象。

例5

提示用戶設置密碼,如果用戶輸入長度<8,則拋出異常:

def input_password():
    #1.提示用戶輸入密碼
    result =input("請輸入密碼")
    #2.判斷密碼長度 >=8 ,返回用戶輸入的密碼
    if len(result) >=8:
        return result
    #3.如果<8 主動拋出異常
    print("主動拋出異常!")
    #1>創建異常對象 -可以使用錯誤信息字符串作為參數
    ex =Exception("密碼長度不夠!")
    #2> 主動拋出異常
    raise ex
#提示用戶輸入密碼
try:
    print(input_password())
except Exception as result:
    print(result)

恭喜結業,以上為Python全部的異常處理內容!但是還需要你在實際場景中多試多練,才能靈活應用!

-------- End --------

精選內容

  • 圖解Pandas-圖文01-數據結構介紹

  • 圖解Pandas-圖文02-創建數據對象

  • 圖解Pandas-圖文03-讀取和存儲Excel文件

  • 圖解Pandas-圖文04-常見的數據訪問

  • 圖解Pandas-圖文05-常見的數據運算

  • 圖解Pandas-圖文06-常見的數學計算

  • 圖解Pandas-圖文07-常見的數據統計

  • 圖解Pandas-圖文08-常見的數據篩選


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved