欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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")

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

try... except 捕獲異常

使用try... except 捕獲異常

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

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

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

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

在拋出異常的日志中,可以看到日志中對 IndexError和 NameError 之間是描述是 The above exception was the direct cause of the following exception,即因?yàn)?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

運(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)錯誤,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 pyecharts Line折線圖的具體實(shí)現(xiàn)

    Python pyecharts Line折線圖的具體實(shí)現(xiàn)

    折線圖在很多圖標(biāo)中都有使用,本文主要介紹了Python pyecharts Line折線圖的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python可視化神器pyecharts繪制餅狀圖

    Python可視化神器pyecharts繪制餅狀圖

    這篇文章主要介紹了Python可視化神器pyecharts繪制餅狀圖,餅圖是用圓形及圓內(nèi)扇形的角度來表示數(shù)值大小的圖形,它主要用于表示一個樣本中各組成部分的數(shù)據(jù)占全部數(shù)據(jù)的比例
    2022-07-07
  • Python中字典的緩存池

    Python中字典的緩存池

    這篇文章主要介紹了Python中字典的緩存池,字典的緩存池采用數(shù)組實(shí)現(xiàn)的,并且容量也是80個,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-05-05
  • python代碼打包工具cx_Freeze的安裝及用法詳解

    python代碼打包工具cx_Freeze的安裝及用法詳解

    cx_Freeze是一個流行的Python庫,它可以將Python腳本及其依賴項(xiàng)打包成獨(dú)立的可執(zhí)行文件,支持多平臺(如Windows、Linux和macOS),本文將結(jié)合實(shí)際案例,詳細(xì)介紹cx_Freeze的安裝、配置和使用方法,需要的朋友可以參考下
    2024-08-08
  • 淺談pandas關(guān)于查看庫或依賴庫版本的API原理

    淺談pandas關(guān)于查看庫或依賴庫版本的API原理

    本文主要介紹了淺談pandas關(guān)于查看庫或依賴庫版本的API原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python如何將文件a.txt的內(nèi)容復(fù)制到b.txt中

    python如何將文件a.txt的內(nèi)容復(fù)制到b.txt中

    這篇文章主要介紹了python如何將文件a.txt的內(nèi)容復(fù)制到b.txt中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python實(shí)現(xiàn)石頭剪刀布程序

    python實(shí)現(xiàn)石頭剪刀布程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)石頭剪刀布程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 使用OpenCV獲取圖片連通域數(shù)量,并用不同顏色標(biāo)記函

    使用OpenCV獲取圖片連通域數(shù)量,并用不同顏色標(biāo)記函

    這篇文章主要介紹了使用OpenCV獲取圖片連通域數(shù)量,并用不同顏色標(biāo)記函,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實(shí)現(xiàn)帶下標(biāo)索引的遍歷操作示例

    Python實(shí)現(xiàn)帶下標(biāo)索引的遍歷操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)帶下標(biāo)索引的遍歷操作,結(jié)合具體實(shí)例形式分析了2種帶索引的遍歷操作實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • python局域網(wǎng)ip掃描示例分享

    python局域網(wǎng)ip掃描示例分享

    這篇文章主要介紹了python局域網(wǎng)ip掃描示例,需要的朋友可以參考下
    2014-04-04

最新評論