久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Python raise語句

2023-11-21 270

Python中的raise語句用于拋出一個指定的異常。當(dāng)程序中出現(xiàn)錯誤或需要中斷執(zhí)行時,可以使用raise語句來引發(fā)一個異常,并附帶一些描述信息。這樣可以讓調(diào)用者知道發(fā)生了什么錯誤,以便進(jìn)行相應(yīng)的處理。

一、raise語句語法

raise_stmt ::= "raise" [expression ["from" expression]]

raise語句用于拋出一個指定的異常。如果沒有提供表達(dá)式,則raise會重新引發(fā)當(dāng)前正在處理的異常,也被稱為活動的異常。如果當(dāng)前沒有活動的異常,則會引發(fā)RuntimeError來提示發(fā)生了錯誤。否則的話,raise會將第一個表達(dá)式求值為異常對象。它必須為BaseException的子類或?qū)嵗?/p>

如果它是一個類,當(dāng)需要時會通過不帶參數(shù)地實(shí)例化該類來獲得異常的實(shí)例。異常的類型為異常實(shí)例的類,值為實(shí)例本身。當(dāng)有異常被引發(fā)時通常會自動創(chuàng)建一個回溯對象并將其關(guān)聯(lián)到它的__traceback__屬性,該屬性是可寫的。

可以創(chuàng)建一個異常并使用with_traceback()異常方法(該方法將返回同一異常實(shí)例,并將回溯對象設(shè)為其參數(shù))直接設(shè)置自己的回溯對象,就像這樣:

raise Exception("foo occurred").with_traceback(tracebackobj)

二、from子句

from子句用于異常串連,如果有該子句,則第二個表達(dá)式必須為另一個異常類或?qū)嵗?如果第二個表達(dá)式是一個異常實(shí)例,它將作為可寫的 __cause__ 屬性被關(guān)聯(lián)到所引發(fā)的異常。 如果該表達(dá)式是一個異常類,這個類將被實(shí)例化且所生成的異常實(shí)例將作為 __cause__ 屬性被關(guān)聯(lián)到所引發(fā)的異常。

如果所引發(fā)的異常未被處理,則兩個異常都將被打印出來:

>>>try:
... print(1 / 0)
...except Exception as exc:
... raise RuntimeError("Something bad happened") from exc
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
RuntimeError: Something bad happened

三、新的異常處理

當(dāng)已經(jīng)有一個異常在處理時如果有新的異常被引發(fā)則類似的機(jī)制會隱式地起作用。 異??梢酝ㄟ^使用 except 或 finally 子句或是 with 語句來處理。 之前的異常將被關(guān)聯(lián)至新異常的 __context__ 屬性:

>>>try:
... print(1 / 0)
...except:
... raise RuntimeError("Something bad happened")
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>

四、異常串連

異常串連可通過在 from 子句中指定 None 來顯式地加以抑制:

>>>try:
... print(1 / 0)
...except:
... raise RuntimeError("Something bad happened") from None
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
RuntimeError: Something bad happened
  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。
Python raise語句
上一篇: Python import語句
Python raise語句
下一篇: Python簡單語句