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

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

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

前言

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

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

raise 引發(fā)異常

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

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

運行結(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 拋出異常時,程序就會終止

try... except 捕獲異常

使用try... except 捕獲異常

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

運行后不會有異常
在捕獲異常后,也可以重新拋一個其它的異常

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 ...

在拋出異常的日志中,可以看到日志中對 IndexError 和 NameError之間是描述是 During handling of the above exception, another exception occurred,即在處理 IndexError 異常時又出現(xiàn)了 NameError 異常,兩個異常之間沒有因果關(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

運行結(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 ...

在拋出異常的日志中,可以看到日志中對 IndexError和 NameError 之間是描述是 The above exception was the direct cause of the following exception,即因為 IndexError 直接異常導(dǎo)致了 NameError異常,兩個異常之間有直接因果關(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

運行結(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。

補充:python中異常處理--raise的使用

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

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

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

相關(guān)文章

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

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

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

    python裝飾器與遞歸算法詳解

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

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

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

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

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

    Python中的shape()詳解

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

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

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

    Django中如何防范CSRF跨站點請求偽造攻擊的實現(xiàn)

    這篇文章主要介紹了Django中如何防范CSRF跨站點請求偽造攻擊的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)置的分頁器組件,能夠幫我們實現(xiàn)對查詢的數(shù)據(jù)進(jìn)行自動分頁,并返回分頁對象,本文講解分頁器的用法
    2021-06-06
  • Python使用selenium模擬鍵盤輸入的常見方法

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

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

最新評論

沁源县| 文水县| 民勤县| 周至县| 宣汉县| 通渭县| 新邵县| 沾益县| 神池县| 宁晋县| 曲周县| 宜宾市| 华宁县| 石渠县| 香格里拉县| 平谷区| 赤城县| 沙坪坝区| 鸡东县| 藁城市| 阿瓦提县| 宝清县| 渭南市| 沅陵县| 太仆寺旗| 朝阳区| 中宁县| 重庆市| 防城港市| 将乐县| 扶余县| 扎囊县| 德惠市| 武宣县| 长子县| 长沙县| 华池县| 夹江县| 灌南县| 旌德县| 香港|