python物件導向學習筆記七 異常

2021-10-10 08:11:30 字數 3700 閱讀 3937

程式執行時,如果python直譯器遇到乙個錯誤,會停止程式的執行,提示錯誤資訊,這就是丟擲異常

程式設計師通過異常捕獲,可以針對突發事件做處理,不讓程式因為報錯而終止。

(1)簡單的捕獲異常語法

對某些不能確定是否正確的**,可以增加try(嘗試)來捕獲異常,並加以處理。

try:

嘗試執行的**

except:

出現錯誤的處理

例子:要求使用者輸入整數

try:

num =

int(

input

("請輸入乙個整數:"

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

except:

print

("請輸入正確的整數!"

) # 錯誤的處理**

print

("-"*50

) # 無論是否出現錯誤,程式均會執行後續的**

輸出:請輸入乙個整數:1.2

請輸入正確的整數!

----

----

----

----

----

----

----

----

----

----

----

----

--

(2)錯誤型別捕獲

針對不同型別的異常,做出不同的響應。

當直譯器丟擲異常時,最後一行的第乙個單詞,就是錯誤型別。

語法格式:

try:

# 不能保證正確的**

except 錯誤型別1:

# 針對錯誤型別1的處理

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

# 針對錯誤2,3的處理

except exception as result: # 固定語法,針對其他錯誤型別

print

("未知錯誤 %s"

% result)

例子:提示使用者輸入乙個整數,使用8除以這個整數並輸出。

有兩種錯誤的可能型別:① 使用者輸入的不是整數 ②使用者輸入的是0,分母不能為0

try:

num =

int(

input

("請輸入乙個整數:"))

result =

8/num

print

(result)

except zerodivisionerror:

print

("除0錯誤"

)except valueerror:

print

("請輸入整數"

)

except exception as result:

print

("未知錯誤 %s"

% result)

輸出:請輸入乙個整數:a

請輸入整數

try:

# 不能保證正確的**

except 錯誤型別1:

# 針對錯誤型別1的處理

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

# 針對錯誤2,3的處理

except exception as result: # 固定語法,針對其他錯誤型別

print

("未知錯誤 %s"

% result)

else

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

finally:

# 無論是否有異常,都會執行的**

**正確:try——> else ——> finally

**有錯誤:try——> except ——> finally

例子:

try:

num =

int(

input

("請輸入乙個整數:"

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

result =

8/ num

print

(result)

except valueerror:

print

("請輸入正確的整數!"

) # 錯誤的處理密碼

except exception as result:

print

("未知錯誤 %s"

% result)

else

:print

("嘗試成功"

)finally:

print

("都會執行"

)print

("-"*50

)輸出:

請輸入乙個整數:0

未知錯誤 division by zero

都會執行

----

----

----

----

----

----

----

----

----

----

----

----

--

函式/方法執行出現異常,會將異常往上傳遞給 函式/方法呼叫的一方。直到傳到主程式,仍然沒有異常處理,程式才會被終止。

因此,在開發中,可以在主程式中,利用異常的傳遞性,增加異常捕獲。這樣就不需要在**中增加大量的異常捕獲了,保證**的簡潔性。

例子:

def demo1()

:return

int(

input

("輸入整數:"))

def demo2()

:return

demo1()

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

try:

print

(demo2()

)except exception as result:

print

("未知錯誤 %s"

% result)

根據應用程式特有的業務需求主動丟擲異常。

語法:① 建立乙個 exception 物件。exception 是python提供的專門的異常類。

② 使用 raise 關鍵字丟擲異常物件。

例子:提示使用者輸入密碼,如果長度少於8,丟擲異常。

def input_password()

: pwd =

input

("請輸入密碼:")if

len(pwd)

>=8:

return pwd

else

: ex =

exception

("密碼長度不夠"

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

raise ex # 主動丟擲

try:

print

(input_password()

)except exception as result:

print

(result)

輸出:請輸入密碼:1234

密碼長度不夠

Python學習筆記 物件導向

物件導向 oop 基本概念 物件導向程式設計 object oriented programming簡寫 oop 1 物件導向基本概念 之前的學習程式設計方式就是面向過程的 面向過程和物件導向,是兩種不同的程式設計方式 對比面向過程的特點,可以更好的了解什麼是物件導向 2 過程和函式 科普 過程是最...

物件導向程式設計(C )學習筆記七

class aaa int main 除此之外,內部類和普通類沒有任何區別。注意事項 內部類和外部類互相沒有特權,它們沒有任何特殊關係,它們不是朋友關係,它們不是父子關係,所以外部類無法自由訪問內部類,內部類也無法訪問外部類。解決名字衝突的終極手段 namespace,名字空間,語法為 namesp...

python物件導向學習(七)單例

目錄2.new 方法 3.python 中的單例 單例設計模式 站物件 印表機物件 python的直譯器獲得物件的引用後,將引用作為第乙個引數,傳遞給 init 方法 重寫 new 方法 的 非常固定!class musicplayer object def new cls,args,kwargs ...