Python 捕獲異常

2022-09-01 02:54:08 字數 2918 閱讀 3352

一、什麼是異常

"""

異常:錯誤,bug

處理異常:嘗試執行某句可能出現異常的語句,

若出錯則用正確的**去替代。

try:

可能發生錯誤的**

except:

如果出現異常執行的**

"""def t1():

try:

f = open('test.txt', 'r')

except:

f = open('test.txt', 'w')

def t2():

try:

b.bar()

except:

class car(object):

def bar(self):

print("剎車")

b = car()

b.bar()

if __name__ == '__main__':

t2()

二、異常型別

(1)"""

1.捕獲指定異常,異常型別有多種

2.若嘗試執行的**異常型別與捕獲的異常型別不同則報錯

3.try下方一般只放一行**,若有多行可能異常**,

則捕獲乙個異常型別後函式返回,及只能捕獲乙個異常型別。

4.捕獲多個指定異常

5.捕獲所有異常,exception 是所有程式異常類的父類

"""

def t3():

"""捕獲多個指定異常

捕獲異常描述資訊

"""try:

print(num)

except (nameerror, zerodivisionerror) as result:

print(result)

# name 'num' is not defined

def t4():

try:

print(num)

except exception as result:

print(result)

if __name__ == '__main__':

# t1()

# t2()

# t3()

t4()

(2)

"""else:沒有異常時執行的**

finally: 無論是否異常都執行的**,例如:關閉檔案

"""

def t1():

try:

print(1)

except exception as r:

print(r)

else:

print('我是else,當無異常時執行的**')

def t2():

try:

f = open('text.txt', 'r')

except exception as r:

print(r)

f = open('text.txt', 'w')

else:

print('沒有異常!')

finally:

print('關閉檔案')

f.close()

if __name__ == '__main__':

# t1()

t2()

三、異常傳遞

"""

異常傳遞(exception passing):

異常時可以巢狀書寫的,由外到內

案例1:1.嘗試唯讀開啟test.txt 檔案,有內容存在則讀取,無則提示使用者

2.迴圈讀取,無內容時退出迴圈,若檔案意外終止,則提示使用者

"""import time

try:

f = open('text.txt')

try:

while true:

content = f.readline()

if len(content) == 0:

break

time.sleep(2)

print(content)

except:

# 在命令提示符中按ctrl + c ,進行測試

print('意外終止讀取資料')

finally:

f.close()

print('關閉檔案')

except:

print('檔案不存在')

四、自定義異常

"""

自定義異常(custom exception)

用來報錯,不合邏輯的錯

案例1:密碼長度不足,則報錯。

1.自定義異常

2.用raise 異常類物件,來丟擲異常的描述資訊

3.捕獲異常

"""class shortinputerror(exception):

"""自定義異常類,繼承exception

"""def __init__(self, length, min_len):

self.length = length

self.min_len = min_len

def __str__(self):

"""設定丟擲異常的描述資訊

"""return f'您輸入的密碼長度是,' \

f'不能小於最小長度 '

def main1():

try:

code = input('請輸入密碼:\n')

if len(code) < 3:

# 丟擲異常類建立物件

raise shortinputerror(len(code), 3)

except exception as r:

# 捕獲該異常

print(r)

else:

print('密碼已輸入完成')

if __name__ == '__main__':

main1()

python異常捕獲 如何捕獲Python中的異常

python 提供了try except語句捕獲並處理異常,該異常處理語句的基本語法結構如下 try 可能產生異常的 塊 except error1,error2,as e 處理異常的 塊1 except error3,error4,as e 處理異常的 塊2該格式中,括起來的部分可以使用,也可以省...

python異常捕獲

python的異常處理如c c 的結構一樣。python用try.except.c c 則用try.catch.並不難理解。在對具體錯誤的獲取則有點不同,主要是語法的差異上。c 在catch後可生成相應乙個異常的類,然後可通過類物件獲取相關的錯誤資訊。而python則不同,它在獲取錯誤資訊有點奇怪,...

Python捕獲異常

如果感覺 可能會出現異常,可以通過如下兩種方法捕獲異常。一 捕獲所以異常 try statement1 statement2 except exception,e print exception,e 二 通過trace模組檢視 import traceback try statement1 stat...