人人妻人人澡人人爽人人精品av_精品乱码一区内射人妻无码_老司机午夜福利视频_精品成品国色天香摄像头_99精品福利国产在线导航_野花社区在线观看视频_大地资源在线影视播放_东北高大肥胖丰满熟女_金门瓶马车内剧烈运动

首頁(yè)>國(guó)內(nèi) > 正文

Python 中的異常處理:學(xué)習(xí)這些技巧,讓你在編程過(guò)程中更加從容

2023-07-07 09:31:10來(lái)源:今日頭條

Python的異常處理是一種機(jī)制,用于在程序執(zhí)行過(guò)程中捕獲和處理錯(cuò)誤。Python中的異常是一種對(duì)象,表示程序發(fā)生了一個(gè)錯(cuò)誤或異常情況。在程序中,當(dāng)出現(xiàn)異常時(shí),程序會(huì)停止執(zhí)行,并且Python解釋器會(huì)打印出異常信息,以幫助我們進(jìn)行調(diào)試和修復(fù)程序。

異常類(lèi)型

Python中有多種類(lèi)型的異常,每種異常都代表了不同的錯(cuò)誤或異常情況。以下是一些常見(jiàn)的異常類(lèi)型及其含義:


(資料圖)

SyntaxError:語(yǔ)法錯(cuò)誤,通常是由于代碼中的拼寫(xiě)錯(cuò)誤、縮進(jìn)問(wèn)題或缺少必要的符號(hào)導(dǎo)致的。NameError:名稱(chēng)錯(cuò)誤,通常是由于使用了一個(gè)未定義的變量或函數(shù)名稱(chēng)導(dǎo)致的。TypeError:類(lèi)型錯(cuò)誤,通常是由于使用了不兼容的數(shù)據(jù)類(lèi)型或函數(shù)參數(shù)導(dǎo)致的。ValueError:數(shù)值錯(cuò)誤,通常是由于使用了不合法的數(shù)據(jù)值或參數(shù)導(dǎo)致的。IndexError:索引錯(cuò)誤,通常是由于使用了不存在的列表或元組索引導(dǎo)致的。KeyError:鍵錯(cuò)誤,通常是由于使用了不存在的字典鍵導(dǎo)致的。AttributeError:屬性錯(cuò)誤,通常是由于使用了不存在的對(duì)象屬性或方法導(dǎo)致的。

我們可以使用Python的內(nèi)置函數(shù)type()來(lái)查看異常對(duì)象的類(lèi)型。以下是一個(gè)示例代碼:

try:    a = 10 / 0except Exception as e:    print(type(e))

在上面的代碼中,我們使用try語(yǔ)句塊來(lái)嘗試執(zhí)行一個(gè)會(huì)出現(xiàn)ZeroDivisionError異常的代碼。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出異常對(duì)象的類(lèi)型。在這個(gè)例子中,輸出的類(lèi)型是。

try-except語(yǔ)句

try-except語(yǔ)句是Python中最基本的異常處理語(yǔ)句。它的作用是嘗試執(zhí)行一個(gè)代碼塊,并在代碼塊中出現(xiàn)異常時(shí)捕獲并處理異常。

以下是一個(gè)try-except語(yǔ)句的示例代碼:

try:    a = 10 / 0except ZeroDivisionError:    print("Division by zero is not allowed")

在上面的代碼中,我們使用try語(yǔ)句塊來(lái)嘗試執(zhí)行一個(gè)會(huì)出現(xiàn)ZeroDivisionError異常的代碼。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出一條自定義的異常信息。在這個(gè)例子中,輸出的信息是"Division by zero is not allowed"。

我們也可以使用多個(gè)except語(yǔ)句來(lái)捕獲不同類(lèi)型的異常。以下是一個(gè)示例代碼:

try:    a = int("abc")except ValueError:    print("Invalid integer")except TypeError:    print("Invalid type")except Exception:    print("Unknown error")

在上面的代碼中,我們使用try語(yǔ)句塊來(lái)嘗試執(zhí)行一個(gè)會(huì)出現(xiàn)ValueError異常的代碼。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出一條相應(yīng)的異常信息。在這個(gè)例子中,輸出的信息是"Invalid integer"。

try-except-else語(yǔ)句

try-except-else語(yǔ)句是在try-except語(yǔ)句的基礎(chǔ)上增加了else語(yǔ)句塊。它的作用是在try語(yǔ)句塊中沒(méi)有出現(xiàn)異常時(shí)執(zhí)行else語(yǔ)句塊中的代碼。

以下是一個(gè)try-except-else語(yǔ)句的示例代碼:

try:    a = int("10")except ValueError:    print("Invalid integer")else:    print("Integer value is", a)

在上面的代碼中,我們使用try語(yǔ)句塊來(lái)嘗試將一個(gè)字符串轉(zhuǎn)換為整數(shù)。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出一條相應(yīng)的異常信息。在else語(yǔ)句塊中,我們使用print語(yǔ)句輸出轉(zhuǎn)換后的整數(shù)值。在這個(gè)例子中,輸出的信息是"Integer value is 10"。

try-except-finally語(yǔ)句

try-except-finally語(yǔ)句是在try-except語(yǔ)句的基礎(chǔ)上增加了finally語(yǔ)句塊。它的作用是在try語(yǔ)句塊中出現(xiàn)異?;驔](méi)有出現(xiàn)異常時(shí)都會(huì)執(zhí)行finally語(yǔ)句塊中的代碼。

以下是一個(gè)try-except-finally語(yǔ)句的示例代碼:

try:    f = open("test.txt", "r")    print(f.read())except FileNotFoundError:    print("File not found")finally:    f.close()

在上面的代碼中,我們使用try語(yǔ)句塊來(lái)嘗試打開(kāi)一個(gè)不存在的文件。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出一條相應(yīng)的異常信息。在finally語(yǔ)句塊中,我們使用close()方法關(guān)閉文件。無(wú)論try語(yǔ)句塊中是否出現(xiàn)異常,finally語(yǔ)句塊中的代碼都會(huì)被執(zhí)行。

自定義異常

我們可以通過(guò)繼承Python內(nèi)置的Exception類(lèi)來(lái)創(chuàng)建自定義的異常。自定義異??梢杂糜诒硎境绦蛑械奶囟ㄥe(cuò)誤或異常情況,并可以在try-except語(yǔ)句中進(jìn)行捕獲和處理。

以下是一個(gè)自定義異常的示例代碼:

class CustomException(Exception):    passtry:    raise CustomException("This is a custom exception")except CustomException as e:    print(e)

在上面的代碼中,我們定義了一個(gè)名為CustomException的自定義異常類(lèi),并在try語(yǔ)句塊中使用raise語(yǔ)句拋出一個(gè)CustomException異常。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出異常信息。在這個(gè)例子中,輸出的信息是"This is a custom exception"。

自定義異常詳細(xì)講解

Python中,我們可以通過(guò)繼承內(nèi)置的Exception類(lèi)來(lái)創(chuàng)建自定義的異常類(lèi)。自定義異??梢杂糜诒硎境绦蛑械奶囟ㄥe(cuò)誤或異常情況,并可以在try-except語(yǔ)句中進(jìn)行捕獲和處理。

創(chuàng)建自定義異常類(lèi)

要?jiǎng)?chuàng)建一個(gè)自定義異常類(lèi),我們可以定義一個(gè)繼承自Exception類(lèi)的新類(lèi)。在自定義異常類(lèi)中,我們可以添加任意的屬性和方法,以便在程序中處理異常時(shí)使用。

以下是一個(gè)自定義異常類(lèi)的示例代碼:

class CustomException(Exception):    def __init__(self, message):        self.message = message    def __str__(self):        return self.message

在上面的代碼中,我們定義了一個(gè)名為CustomException的自定義異常類(lèi),并添加了一個(gè)帶有message參數(shù)的構(gòu)造函數(shù)。在構(gòu)造函數(shù)中,我們將message參數(shù)賦值給對(duì)象的message屬性。我們還覆蓋了Exception類(lèi)的__str__()方法,以便在程序中使用print語(yǔ)句輸出異常信息時(shí)能夠輸出自定義的異常信息。

拋出自定義異常

要拋出自定義異常,我們可以使用raise語(yǔ)句,并在其中傳遞自定義異常類(lèi)的實(shí)例對(duì)象。

以下是一個(gè)拋出自定義異常的示例代碼:

try:    raise CustomException("This is a custom exception")except CustomException as e:    print(e)

在上面的代碼中,我們使用raise語(yǔ)句拋出一個(gè)CustomException異常,并傳遞一個(gè)自定義的異常信息。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出異常信息。

繼承內(nèi)置異常類(lèi)

我們還可以通過(guò)繼承內(nèi)置的異常類(lèi)來(lái)創(chuàng)建自定義異常。這樣可以使自定義異常具有與內(nèi)置異常相似的行為和屬性。

以下是一個(gè)繼承內(nèi)置異常類(lèi)的自定義異常的示例代碼:

class CustomValueError(ValueError):    def __init__(self, message):        self.message = message    def __str__(self):        return self.message

在上面的代碼中,我們定義了一個(gè)名為CustomValueError的自定義異常類(lèi),并繼承了內(nèi)置的ValueError異常類(lèi)。我們還添加了一個(gè)帶有message參數(shù)的構(gòu)造函數(shù),并覆蓋了Exception類(lèi)的__str__()方法。

捕獲自定義異常

要捕獲自定義異常,我們可以在try-except語(yǔ)句中添加一個(gè)對(duì)自定義異常的except語(yǔ)句塊。

以下是一個(gè)捕獲自定義異常的示例代碼:

try:    raise CustomException("This is a custom exception")except CustomException as e:    print(e)

在上面的代碼中,我們使用raise語(yǔ)句拋出一個(gè)CustomException異常,并在try-except語(yǔ)句中添加一個(gè)對(duì)CustomException異常的except語(yǔ)句塊。在except語(yǔ)句塊中,我們使用print語(yǔ)句輸出異常信息。

關(guān)鍵詞:

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 [email protected]  備案號(hào): 京ICP備2022022245號(hào)-21