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

python?中raise用法

 更新時間:2021年12月12日 09:35:28   作者:C語言中國網(wǎng)  
這篇文章主要介紹了python?中raise用法,Python?允許我們在程序中手動設(shè)置異常,就是使用raise?語句來實現(xiàn),下面我們就來看看raise的具體用法,文章內(nèi)容介紹詳細,具有一定的參考價值,需要的小伙伴可以參考一下

是否可以在程序的指定位置手動拋出一個異常?答案是肯定的,Python 允許我們在程序中手動設(shè)置異常,使用 raise 語句即可。

可能會感到疑惑,即我們從來都是想方設(shè)法地讓程序正常運行,為什么還要手動設(shè)置異常呢?首先要分清楚程序發(fā)生異常和程序執(zhí)行錯誤,它們完全是兩碼事,程序由于錯誤導(dǎo)致的運行異常,是需要程序員想辦法解決的;但還有一些異常,是程序正常運行的結(jié)果,比如用 raise 手動引發(fā)的異常。

raise 語句的基本語法格式為:

raise [exceptionName [(reason)]]

其中,用 [] 括起來的為可選參數(shù),其作用是指定拋出的異常名稱,以及異常信息的相關(guān)描述。如果可選參數(shù)全部省略,則 raise 會把當(dāng)前錯誤原樣拋出;如果僅省略 (reason),則在拋出異常時,將不附帶任何的異常描述信息。

也就是說,raise 語句有如下三種常用的用法:

  • raise:單獨一個 raise。該語句引發(fā)當(dāng)前上下文中捕獲的異常(比如在 except 塊中),或默認引發(fā) RuntimeError 異常。
  • raise 異常類名稱:raise 后帶一個異常類名稱,表示引發(fā)執(zhí)行類型的異常。
  • raise 異常類名稱(描述信息):在引發(fā)指定類型的異常的同時,附帶異常的描述信息。

想了解一下常用的異常類名稱,可以閱讀《Python常見異常類型》一節(jié)。

顯然,每次執(zhí)行 raise 語句,都只能引發(fā)一次執(zhí)行的異常。

首先,我們來測試一下以上 3 種 raise 的用法:

>>> raise
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    raise
RuntimeError: No active exception to reraise
>>> raise ZeroDivisionError
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    raise ZeroDivisionError
ZeroDivisionError
>>> raise ZeroDivisionError("除數(shù)不能為零")
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    raise ZeroDivisionError("除數(shù)不能為零")
ZeroDivisionError: 除數(shù)不能為零

當(dāng)然,我們手動讓程序引發(fā)異常,很多時候并不是為了讓其崩潰。事實上,raise 語句引發(fā)的異常通常用 try except(else finally)異常處理結(jié)構(gòu)來捕獲并進行處理。例如:

try:
    a = input("輸入一個數(shù):")
    #判斷用戶輸入的是否為數(shù)字
    if(not a.isdigit()):
        raise ValueError("a 必須是數(shù)字")
except ValueError as e:
    print("引發(fā)異常:",repr(e))


程序運行結(jié)果為:

  • 輸入一個數(shù):a
  • 引發(fā)異常: ValueError('a 必須是數(shù)字',)

可以看到,當(dāng)用戶輸入的不是數(shù)字時,程序會進入 if 判斷語句,并執(zhí)行 raise 引發(fā) ValueError 異常。但由于其位于 try 塊中,因為 raise 拋出的異常會被 try 捕獲,并由 except 塊進行處理。

因此,雖然程序中使用了 raise 語句引發(fā)異常,但程序的執(zhí)行是正常的,手動拋出的異常并不會導(dǎo)致程序崩潰。
raise 不需要參數(shù)

正如前面所看到的,在使用 raise 語句時可以不帶參數(shù),例如:

try:
    a = input("輸入一個數(shù):")
    if(not a.isdigit()):
        raise ValueError("a 必須是數(shù)字")
except ValueError as e:
    print("引發(fā)異常:",repr(e))
    raise


程序執(zhí)行結(jié)果為:

輸入一個數(shù):a
引發(fā)異常: ValueError('a 必須是數(shù)字',)
Traceback (most recent call last):
? File "D:\python3.6\1.py", line 4, in <module>
??? raise ValueError("a 必須是數(shù)字")
ValueError: a 必須是數(shù)字

這里重點關(guān)注位于 except 塊中的 raise,由于在其之前我們已經(jīng)手動引發(fā)了 ValueError 異常,因此這里當(dāng)再使用 raise 語句時,它會再次引發(fā)一次。

當(dāng)在沒有引發(fā)過異常的程序使用無參的 raise 語句時,它默認引發(fā)的是 RuntimeError 異常。例如:

try:
    a = input("輸入一個數(shù):")
    if(not a.isdigit()):
        raise
except RuntimeError as e:
    print("引發(fā)異常:",repr(e))


程序執(zhí)行結(jié)果為:

輸入一個數(shù):a
引發(fā)異常: RuntimeError('No active exception to reraise',)

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

相關(guān)文章

  • Python實現(xiàn)爬蟲爬取NBA數(shù)據(jù)功能示例

    Python實現(xiàn)爬蟲爬取NBA數(shù)據(jù)功能示例

    這篇文章主要介紹了Python實現(xiàn)爬蟲爬取NBA數(shù)據(jù)功能,涉及Python針對URL模塊、字符串、列表遍歷、Excel寫入等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 基于Python實現(xiàn)格斗小游戲的示例代碼

    基于Python實現(xiàn)格斗小游戲的示例代碼

    格斗游戲,曾經(jīng)是街機廳里最火爆的游戲之一,甚至可以把“之一”去掉,那個年代的格斗游戲就是街機游戲的王。本文就來用Python實現(xiàn)一個簡單的格斗游戲,感興趣的可以了解一下
    2023-03-03
  • Python中scrapy下載保存圖片的示例

    Python中scrapy下載保存圖片的示例

    在日常爬蟲練習(xí)中,我們爬取到的數(shù)據(jù)需要進行保存操作,在scrapy中我們可以使用ImagesPipeline這個類來進行相關(guān)操作,本文主要介紹了scrapy下載保存圖片,感興趣的可以了解一下
    2021-07-07
  • python 判斷三個數(shù)字中的最大值實例代碼

    python 判斷三個數(shù)字中的最大值實例代碼

    這篇文章主要介紹了python 判斷三個數(shù)字中的最大值,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Python3里的super()和__class__使用介紹

    Python3里的super()和__class__使用介紹

    這篇文章主要介紹了Python3里的super()和__class__使用介紹,本文用實例講解了這兩個方法之間的關(guān)系,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)操作Redis所有類型的方法詳解

    Python實現(xiàn)操作Redis所有類型的方法詳解

    Redis作為一款高性能的NoSQL數(shù)據(jù)庫,越來越受到了廣大開發(fā)者的喜愛。本篇博客將介紹如何使用Python操作Redis的所有類型,以及一些高級用法,感興趣的可以了解一下
    2023-04-04
  • python如何繪制疫情圖

    python如何繪制疫情圖

    這篇文章主要介紹了python如何繪制疫情圖,幫助大家理解和學(xué)習(xí)用python繪制圖像,感興趣的朋友可以了解下
    2020-09-09
  • python之Socket網(wǎng)絡(luò)編程詳解

    python之Socket網(wǎng)絡(luò)編程詳解

    這篇文章主要為大家詳細介紹了python之Socket網(wǎng)絡(luò)編程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • python發(fā)送arp欺騙攻擊代碼分析

    python發(fā)送arp欺騙攻擊代碼分析

    這篇文章主要介紹了python發(fā)送arp欺騙攻擊的方法,大家碰到這樣的事情可以預(yù)防一下
    2014-01-01
  • Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法

    Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法

    今天小編就為大家分享一篇關(guān)于Python使用os.listdir()和os.walk()獲取文件路徑與文件下所有目錄的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04

最新評論

尚义县| 始兴县| 忻城县| 藁城市| 新巴尔虎左旗| 上蔡县| 灵寿县| 香港 | 孝昌县| 惠安县| 辰溪县| 寻乌县| 盘锦市| 琼中| 错那县| 泸州市| 宜川县| 靖西县| 武宣县| 迭部县| 韶山市| 武乡县| 阳春市| 壶关县| 马鞍山市| 澜沧| 卫辉市| 汽车| 潢川县| 景宁| 朝阳县| 肥城市| 海丰县| 安乡县| 庆元县| 理塘县| 山东| 西乌| 昆山市| 肇州县| 枣强县|