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

十分鐘徹底搞定python異常處理

編輯:Python

異常處理:

捕獲異常,簡單的捕獲異常語法,在程序開發時,可以嘗試加如 try來捕獲異常

try:
嘗試執行的代碼
except:
出現錯誤的處理

try嘗試 下方填寫要嘗試的密碼,不確定能不能夠正常執行的代碼

except 如果不是,下方填寫嘗試失敗的代碼

例子:簡單的異常捕獲演練–要求用戶輸入整數

try:
#不能確定爭取執行的代碼
#提示用戶輸入一個數字
num = int(input("請輸入一個數字:"))
except:
print("請輸入一個正確的數字!")
print("-"*50)

錯誤類型捕獲:

在程序執行時,可能會遇到不同類型的,並且需要針對不同類型的異常,做出不同的響應,這個時候就需要指定錯誤類型了

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

示例需求:

提示用戶輸入一個整數

使用8除以用戶輸入的整數並且輸出

while True:
try:
# 提示用戶輸入一個整數
num = int(input("輸入一個整數:"))
# 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常 賦值錯誤的第一個單詞作為關鍵字進行處理
result = 8 / num
print(result)
except ZeroDivisionError:
print("數學錯誤")
except ValueError:
print("請輸入數字")

捕獲未知錯誤:

except Exception as result:
print("未知錯誤 %s" %result)

可以把未知錯誤輸出到控制台,而不會報錯崩潰使用 Exception關鍵字

try:
# 提示用戶輸入一個整數
num = int(input("輸入一個整數:"))
# 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常 賦值錯誤的第一個單詞作為關鍵字進行處理
result = 8 / num
print(result)
except ValueError:
print("請輸入數字")
except Exception as result:
print("未知錯誤%s"%result)

異常捕獲的完整語法:

try:
#嘗試執行的代碼
pass
except 錯誤類型1的第一個關鍵字:
#針對錯誤類型1對應的代碼處理
pass
except 錯誤類型2的第一個關鍵詞:
#針對錯誤類型2的對應代碼處理
pass
except (錯誤類型3,錯誤類型4):
#針對錯誤類型3,4的對應代碼處理
pass
except Exception as result:
#打印錯誤信息
print(result)
else:
#沒異常會執行的代碼
pass
finally:
#無論是否有異常,都會執行的代碼
print("無論是否存在異常,都會執行的代碼")

示例代碼:

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

異常的傳遞:

當函數/方法執行出現異常時,會將異常傳遞給函數/方法的調用一方

如果傳遞到主程序,仍然沒有異常處理,程序才會被終止

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

示例代碼:

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

拋出raise異常:

主動拋出異常

python中提供了一個 Exception 異常類

在開發時,如果滿足特定業務的需求時,希望拋出異常,可以

創建一個 Exception的對象

使用 raise關鍵字拋出異常對象

需求案例:

定義 input_password函數,提示用戶輸入密碼

如果用戶輸入長度<8,拋出異常

如果用戶輸入長度>=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全部的全部的異常處理,還是比較簡單的!

推薦閱讀

  • 5個節約生命的python小技巧

  • 整理了上千個Python類庫,簡直太酷啦!

  • 10行Python代碼能做出哪些有趣的事情?


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