python中try的使用方法詳解
python中try的使用
在 Python 中,try
是用于異常處理的關(guān)鍵字。try
語(yǔ)句的語(yǔ)法如下:
try: # 可能會(huì)拋出異常的語(yǔ)句塊 except ExceptionType1: # 處理 ExceptionType1 異常的語(yǔ)句塊 except ExceptionType2: # 處理 ExceptionType2 異常的語(yǔ)句塊 else: # 如果沒(méi)有異常發(fā)生,執(zhí)行的語(yǔ)句塊 finally: # 不管有沒(méi)有異常,都會(huì)執(zhí)行的語(yǔ)句塊
其中,try
語(yǔ)句塊中的代碼可能會(huì)拋出異常,如果拋出了異常,則會(huì)在 try
語(yǔ)句塊中斷,并跳轉(zhuǎn)到對(duì)應(yīng)的 except
語(yǔ)句塊中處理異常。except
語(yǔ)句塊中可以指定要處理的異常類(lèi)型,如果拋出的異常是指定類(lèi)型的異常,則會(huì)執(zhí)行對(duì)應(yīng)的 except
語(yǔ)句塊中的代碼。
如果在 try
語(yǔ)句塊中沒(méi)有拋出異常,則會(huì)執(zhí)行 else
語(yǔ)句塊中的代碼。finally
語(yǔ)句塊中的代碼不管有沒(méi)有異常都會(huì)執(zhí)行。
以下是一個(gè)簡(jiǎn)單的例子,演示了 try
語(yǔ)句塊的使用:
try: x = int(input("請(qǐng)輸入一個(gè)整數(shù): ")) print("輸入的整數(shù)是:", x) except ValueError: print("輸入錯(cuò)誤:請(qǐng)輸入整數(shù)") else: print("沒(méi)有發(fā)生異常") finally: print("程序執(zhí)行完畢")
在這個(gè)例子中,try
語(yǔ)句塊中的代碼嘗試將用戶輸入轉(zhuǎn)換成整數(shù),并輸出轉(zhuǎn)換后的結(jié)果。如果用戶輸入的不是整數(shù),則會(huì)拋出 ValueError
異常,然后跳轉(zhuǎn)到對(duì)應(yīng)的 except
語(yǔ)句塊中處理異常。在 except
語(yǔ)句塊中,我們輸出了一條錯(cuò)誤消息,告訴用戶輸入錯(cuò)誤。在 else
語(yǔ)句塊中,我們輸出了一條消息,表示沒(méi)有發(fā)生異常。在 finally
語(yǔ)句塊中,我們輸出了一條消息,表示程序執(zhí)行完畢,無(wú)論有沒(méi)有發(fā)生異常都會(huì)執(zhí)行。
自定義異常
ValueError
是 Python 內(nèi)置的異常類(lèi)型之一,它通常表示某個(gè)函數(shù)或方法收到的參數(shù)無(wú)效或不合法。例如,在嘗試將一個(gè)字符串轉(zhuǎn)換為整數(shù)時(shí),如果字符串不是一個(gè)合法的數(shù)字,則會(huì)拋出 ValueError
異常。
在 Python 中,除了內(nèi)置的異常類(lèi)型,也可以自定義異常類(lèi)型。為了自定義一個(gè)異常類(lèi)型,可以定義一個(gè)新的類(lèi),并繼承自 Exception
類(lèi)或其它內(nèi)置的異常類(lèi)型。例如,以下代碼定義了一個(gè)自定義的異常類(lèi)型 MyError
:
class MyError(Exception): pass
定義了 MyError
異常類(lèi)型之后,就可以在程序中拋出這個(gè)異常。例如:
def my_function(x): if x < 0: raise MyError("x不能小于0") else: return x * 2 try: result = my_function(-1) except MyError as e: print("發(fā)生了自定義異常:", e) else: print("結(jié)果是:", result)
在這個(gè)例子中,我們定義了一個(gè)名為 my_function()
的函數(shù),用于接收一個(gè)數(shù)字 x
,并將其乘以 2。如果 x
是一個(gè)負(fù)數(shù),則會(huì)拋出 MyError
異常,并輸出錯(cuò)誤消息。在 try
語(yǔ)句塊中,我們調(diào)用了 my_function(-1)
,由于 -1
是一個(gè)負(fù)數(shù),因此會(huì)拋出 MyError
異常。在 except
語(yǔ)句塊中,我們捕獲了這個(gè)異常,并輸出了錯(cuò)誤消息。在 else
語(yǔ)句塊中,我們輸出了計(jì)算結(jié)果。
內(nèi)置異常
Python 中內(nèi)置的異常類(lèi)型非常多,可以用來(lái)處理不同類(lèi)型的錯(cuò)誤。以下是 Python 3.9.6 版本中內(nèi)置的常見(jiàn)異常類(lèi)型及其說(shuō)明:
Exception
:所有異常的基類(lèi)。AttributeError
:對(duì)象沒(méi)有這個(gè)屬性。EOFError
:沒(méi)有內(nèi)建輸入,到達(dá)了 EOF 標(biāo)記。FileExistsError
:在創(chuàng)建文件或目錄時(shí),發(fā)現(xiàn)文件或目錄已經(jīng)存在。FileNotFoundError
:文件或目錄不存在。ImportError
:模塊導(dǎo)入失敗。IndexError
:序列中沒(méi)有這個(gè)索引。KeyError
:映射中沒(méi)有這個(gè)鍵。KeyboardInterrupt
:用戶中斷執(zhí)行。MemoryError
:內(nèi)存溢出錯(cuò)誤。NameError
:未聲明/初始化對(duì)象(沒(méi)有屬性)。NotImplementedError
:抽象方法沒(méi)有實(shí)現(xiàn)。OSError
:操作系統(tǒng)錯(cuò)誤,例如文件打開(kāi)/讀取錯(cuò)誤。OverflowError
:數(shù)值運(yùn)算超出最大值。RecursionError
:遞歸嵌套太深。RuntimeError
:通用運(yùn)行時(shí)錯(cuò)誤。StopIteration
:迭代器沒(méi)有更多的值。SyntaxError
:語(yǔ)法錯(cuò)誤。IndentationError
:縮進(jìn)錯(cuò)誤。TabError
:Tab 和空格混用。SystemError
:解釋器內(nèi)部錯(cuò)誤。TypeError
:操作或函數(shù)應(yīng)用于不適當(dāng)?shù)念?lèi)型。UnboundLocalError
:訪問(wèn)未初始化的本地變量。UnicodeError
:Unicode 相關(guān)的錯(cuò)誤。ValueError
:操作或函數(shù)接收到的參數(shù)具有不正確的值。ZeroDivisionError
:除數(shù)為零。
需要注意的是,這只是 Python 中內(nèi)置的一部分異常類(lèi)型,還有許多其他的異常類(lèi)型,而且還可以自定義異常類(lèi)型。在編寫(xiě)代碼時(shí),可以根據(jù)需要選擇適當(dāng)?shù)漠惓n?lèi)型來(lái)處理錯(cuò)誤。
總結(jié)
到此這篇關(guān)于python中try的使用方法的文章就介紹到這了,更多相關(guān)python try的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)統(tǒng)計(jì)圖像連通域的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)統(tǒng)計(jì)圖像連通域的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04Python如何使用__slots__實(shí)現(xiàn)節(jié)省內(nèi)存和性能優(yōu)化
你有想過(guò),一個(gè)小小的 __slots__ 能讓你的 Python 類(lèi)內(nèi)存消耗直接減半嗎,沒(méi)錯(cuò),今天咱們要聊的就是這個(gè)讓人眼前一亮的技巧,感興趣的小伙伴可以了解下2025-03-03python3報(bào)錯(cuò)check_hostname?requires?server_hostname的解決
這篇文章主要介紹了python3報(bào)錯(cuò)check_hostname?requires?server_hostname的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12nohup后臺(tái)啟動(dòng)Python腳本,log不刷新的解決方法
今天小編就為大家分享一篇nohup后臺(tái)啟動(dòng)Python腳本,log不刷新的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例
這篇文章主要介紹了Python實(shí)現(xiàn)快速排序和插入排序算法及自定義排序的示例,自定義排序用到了Python的sort和sorted函數(shù),需要的朋友可以參考下2016-02-02python中not、and和or的優(yōu)先級(jí)與詳細(xì)用法介紹
這篇文章主要給大家介紹了python中not、and和or的優(yōu)先級(jí)與詳細(xì)用法介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python實(shí)現(xiàn)partial改變方法默認(rèn)參數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)partial改變方法默認(rèn)參數(shù),需要的朋友可以參考下2014-08-08解決Python 異常TypeError: cannot concatenate ''str'' and ''int''
這篇文章主要介紹了解決Python 異常TypeError: cannot concatenate 'str' and 'int' objects,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04