最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python語法?raise?...?from?用法示例詳解

 更新時(shí)間:2025年07月29日 09:20:13   作者:上海-悠悠  
Python中raise語句用于主動(dòng)拋出異常,try-except捕獲后可重拋,raise...from...關(guān)聯(lián)異常鏈,from?None則斷開,影響錯(cuò)誤信息顯示,下面給大家介紹Python語法?raise?...?from?用法示例,感興趣的朋友一起看看吧

前言

當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),系統(tǒng)會(huì)自動(dòng)觸發(fā)異常。Python 也允許程序自行引發(fā)異常,自行引發(fā)異常使用 raise 語句來完成。

  • 使用 raise 拋出新的異常
  • 使用 raise ... from ... 拋出新的異常時(shí),新的異常是由舊的異常表現(xiàn)的;
  • 使用 raise ... from None 拋出新的異常時(shí),不會(huì)打印舊的異常(即禁止的異常關(guān)聯(lián))

raise 引發(fā)異常

使用 raise 語句,主動(dòng)引發(fā)異常,終止程序

x = 20
if not isinstance(x, str):
    raise Exception("value is not type of str")
else:
    print("hello")

運(yùn)行結(jié)果:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    raise Exception("value is not type of str")
Exception: value is not type of str

當(dāng)raise 拋出異常時(shí),程序就會(huì)終止

try... except 捕獲異常

使用try... except 捕獲異常

x = [20, 3, 22, 11]
try:
    print(x[7])
except IndexError:
    print("index out of list")

運(yùn)行后不會(huì)有異常
在捕獲異常后,也可以重新拋一個(gè)其它的異常

x = [20, 3, 22, 11]
try:
    print(x[7])
except IndexError:
    print("index out of list")
    raise NameError("new exception ...")

輸出結(jié)果:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    print(x[7])
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>
    raise NameError("new exception ...")
NameError: new exception ...

在拋出異常的日志中,可以看到日志中對(duì) IndexError 和 NameError之間是描述是 During handling of the above exception, another exception occurred,即在處理 IndexError 異常時(shí)又出現(xiàn)了 NameError 異常,兩個(gè)異常之間沒有因果關(guān)系。

raise ... from 用法

示例:

x = [20, 3, 22, 11]
try:
    print(x[7])
except IndexError as e:
    print("index out of list")
    raise NameError("new exception ...") from e

運(yùn)行結(jié)果

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    print(x[7])
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>
    raise NameError("new exception ...") from e
NameError: new exception ...

在拋出異常的日志中,可以看到日志中對(duì) IndexError和 NameError 之間是描述是 The above exception was the direct cause of the following exception,即因?yàn)?IndexError 直接異常導(dǎo)致了 NameError異常,兩個(gè)異常之間有直接因果關(guān)系。

示例:

x = [20, 3, 22, 11]
try:
    print(x[7])
except IndexError as e:
    print("index out of list")
    raise NameError("new exception ...") from None

運(yùn)行結(jié)果

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>
    raise NameError("new exception ...") from None
NameError: new exception ...

在拋出異常的日志中,可以看到日志只打印了 NameError 而沒有打印 IndexError。

補(bǔ)充:python中異常處理--raise的使用

使用raise拋出異常
當(dāng)程序出現(xiàn)錯(cuò)誤,python會(huì)自動(dòng)引發(fā)異常,也可以通過raise顯示地引發(fā)異常。一旦執(zhí)行了raise語句,raise后面的語句將不能執(zhí)行。
演示raise用法

try:
     s = None
     if s is None:
         print "s 是空對(duì)象"
         raise NameError     #如果引發(fā)NameError異常,后面的代碼將不能執(zhí)行
     print len(s)  #這句不會(huì)執(zhí)行,但是后面的except還是會(huì)走到
except TypeError:
     print "空對(duì)象沒有長度"
s = None
if s is None:
    raise NameError
print 'is here?' #如果不使用try......except這種形式,那么直接拋出異常,不會(huì)執(zhí)行到這里

到此這篇關(guān)于Python語法 raise ... from 用法示例詳解的文章就介紹到這了,更多相關(guān)Python raise ... from 用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python利用模糊哈希實(shí)現(xiàn)對(duì)比文件相似度

    Python利用模糊哈希實(shí)現(xiàn)對(duì)比文件相似度

    對(duì)比兩個(gè)文件相似度,python中可通過difflib.SequenceMatcher/ssdeep/python_mmdt/tlsh實(shí)現(xiàn),<BR>在大量需要對(duì)比,且文件較大時(shí),需要更高的效率,可以考慮模糊哈希,本文就來和大家詳細(xì)聊聊
    2023-01-01
  • python裝飾器與遞歸算法詳解

    python裝飾器與遞歸算法詳解

    本文給大家詳細(xì)講解了python中的裝飾器與遞歸算法,有需要的小伙伴可以來參考下,希望對(duì)大家學(xué)習(xí)Python能夠有所幫助
    2016-02-02
  • python簡單實(shí)現(xiàn)獲取當(dāng)前時(shí)間

    python簡單實(shí)現(xiàn)獲取當(dāng)前時(shí)間

    最近項(xiàng)目中經(jīng)常需要python去取當(dāng)前的時(shí)間,雖然不是很難,但是老是忘記,用一次丟一次,為了能夠更好的記住,我今天特意寫下python 當(dāng)前時(shí)間這篇文章,如果你覺的對(duì)你有用的話,可以收藏下。
    2016-08-08
  • Python實(shí)現(xiàn)元素等待代碼實(shí)例

    Python實(shí)現(xiàn)元素等待代碼實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)元素等待代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python中的shape()詳解

    Python中的shape()詳解

    這篇文章主要介紹了Python中的shape()詳解,在debug深度學(xué)習(xí)相關(guān)代碼的時(shí)候,很容易出現(xiàn)shape()這樣形式的東西,用來告知輸出數(shù)據(jù)的形式,需要的朋友可以參考下
    2023-08-08
  • Pandas Series如何轉(zhuǎn)換為DataFrame

    Pandas Series如何轉(zhuǎn)換為DataFrame

    這篇文章主要介紹了Pandas Series如何轉(zhuǎn)換為DataFrame問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Django中如何防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的實(shí)現(xiàn)

    Django中如何防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的實(shí)現(xiàn)

    這篇文章主要介紹了Django中如何防范CSRF跨站點(diǎn)請(qǐng)求偽造攻擊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python tqdm庫的使用

    python tqdm庫的使用

    這篇文章主要介紹了python tqdm庫的使用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Django Paginator分頁器的使用示例

    Django Paginator分頁器的使用示例

    django內(nèi)置的分頁器組件,能夠幫我們實(shí)現(xiàn)對(duì)查詢的數(shù)據(jù)進(jìn)行自動(dòng)分頁,并返回分頁對(duì)象,本文講解分頁器的用法
    2021-06-06
  • Python使用selenium模擬鍵盤輸入的常見方法

    Python使用selenium模擬鍵盤輸入的常見方法

    本文主要介紹了在使用Selenium進(jìn)行模擬登錄時(shí),賬號(hào)和密碼輸入失敗的問題,并提出了幾種解決方法,包括使用Selenium的send_keys函數(shù)、pyautogui庫、pynput庫和JavaScript輸入操作,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

和静县| 邵阳市| 乐昌市| 建宁县| 江油市| 自贡市| 新郑市| 蓬安县| 沅陵县| 天峻县| 兴海县| 喀喇沁旗| 武鸣县| 正宁县| 藁城市| 牡丹江市| 栾城县| 洞口县| 石台县| 定远县| 鄂伦春自治旗| 宁城县| 根河市| 崇左市| 云龙县| 沂水县| 永仁县| 滨海县| 老河口市| 青海省| 丰宁| 吉木萨尔县| 毕节市| 府谷县| 汕尾市| 青阳县| 祥云县| 会泽县| 上蔡县| 中西区| 西乡县|