30 Python基礎 異常

2021-10-08 18:07:36 字數 4411 閱讀 4407

目錄

1.  異常的概念

2.  捕獲異常

2.1  簡單的捕獲異常語法

2.2  錯誤型別捕獲 例項

捕獲未知錯誤:

2.3  異常捕獲完整語法

3.  異常的傳遞

4.  丟擲 raise 異常

4.1 應用場景

4.2  丟擲異常

例項:

try:

嘗試執行的**

except:

出現錯誤的處理

簡單異常捕獲演練---- 要求使用者輸入整數

try:

# 不能確定正確執行的**

num = int(input("請輸入乙個整數: "))

except:

# 錯誤**的處理

print("請輸入正確的整數")

traceback (most recent call last):

file "c:/users/10428/desktop/py-project/異常/ky_02_捕獲錯誤型別.py", line 3, in

num = int(input("輸入乙個整數"))

valueerror: invalid literal for int() with base 10: 'a'

語法格式如下:

try:

# 嘗試執行的**

pass

except 錯誤型別1:

# 針對錯誤型別1, 對應的**處理

pass

except (錯誤型別2, 錯誤型別3):

# 針對錯誤型別2 和 3, 對應的**處理

pass

except exception as result:

print("未知錯誤 %s" % result)

需求提示使用者輸入乙個整數

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

**:

try:

# 提示使用者輸入乙個整數

num = int(input("輸入乙個整數"))

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

result = 8 / num

print(result)

except zerodivisionerror:

print("除0錯誤")

except valueerror:

print("請輸入正確的整數")

except exception as result:

print("位置錯誤 %s" %result)

**:

try:

# 提示使用者輸入乙個整數

num = int(input("輸入乙個整數:"))

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

result = 8 / num

print(result)

except zerodivisionerror:

print("除0錯誤")

except exception as result:

print("未知錯誤 %s" % result)

c:\users\10428\desktop\py-project\venv\scripts\python.exe c:/users/10428/desktop/py-project/異常/ky_03_捕獲未知錯誤.py

輸入乙個整數:a

未知錯誤 invalid literal for int() with base 10: 'a'

在實際開發中,  為了能夠處理複雜的異常情況,  完整的異常語法如下:

try:

# 嘗試執行的**

pass

except 錯誤型別2:

# 針對錯誤型別2, 對應的**處理

pass

except (錯誤型別3, 錯誤型別4):

# 針對錯誤型別3 和 4, 對應的**處理

pass

except exception as result:

# 列印錯誤資訊

print(result)

else:

# 沒有異常才會執行的**

pass

finally:

# 無論時候有異常, 都會執行的**

pass

上個練習完整**:

try:

# 提示使用者輸入乙個整數

num = int(input("請輸入乙個整數: "))

result = 8 / num

print(result)

except valueerror:

print("請輸入正確的整數")

except exception as result:

print("未知錯誤 %s" % result)

else:

print("成功")

finally:

print("執行完成")

**:

def demo1():

return int(input("輸入整數:"))

def demo2():

return demo1()

# 利用異常的傳遞性,在主程式捕獲異常

try:

print(demo2())

except exception as result:

print("未知錯誤 %s" % result)

注意

建立乙個exception  的物件使用 raise關鍵字丟擲異常物件**:

def input_password():

# 1.提示使用者輸入密碼

pwd = input("請輸入密碼:")

# 2.判斷密碼長度 >= 8,返回使用者輸入的密碼

if len(pwd) >= 8:

return pwd

# 3.如果 < 8,主動丟擲異常

print("主動丟擲異常")

# 1.建立異常物件--可以使用錯誤資訊字串作為引數

ex = exception("密碼長度不夠")

# 2.主動丟擲異常

raise ex

# 提示使用者輸入密碼

try:

print(input_password())

except exception as result:

print(result)

輸出:

c:\users\10428\desktop\py-project\venv\scripts\python.exe c:/users/10428/desktop/py-project/異常/ky_06_丟擲異常.py

請輸入密碼:1

主動丟擲異常

密碼長度不夠

關鍵字assert可以構成斷言語句。

它的價值在於當我們在構建乙個新的程式模組時,可以使用它幫我們鎖定bug範圍。

assert 條件
a = ''

實際上,assert也可以用

if not expression:

raise argument

30 python匯入包和子包

我們先建立乙個包,所謂的包就是建立乙個目錄,裡面有乙個 init py檔案。我們在common目錄下建立乙個mypack的目錄,在該目錄裡面建立下列3個.py檔案 mypack init py print mypack init def init print mypack init function...

python異常基礎

try後面至少要有一項,亦可以選擇 except else finally中的任意組合 assert語句一般用於開發時對程式條件的驗證,只有當內建 debug 為true時,assert語句才有效。當python指令碼以 o選項編譯成為位元組碼檔案時,assert 語句將被移除。except 帶引數...

Python基礎 異常

google c style中禁止使用異常。python中也有異常,就簡單分享一下。1 0就會產生異常。按自己的方式出錯 raise語句 raise exception traceback most recent all last 自定義異常類 class somecustomexception e...