五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

python 警告捕獲(RuntimeWarning Catch)

2023-06-05 22:47 作者:游戲王luffy  | 我要投稿

1.背景

python腳本中,我們經(jīng)常會使用try-except異常處理機制,來捕獲和處理程序執(zhí)行過程中可能出現(xiàn)的錯誤和異常情況。但是,我們也會在執(zhí)行python腳本的過程遇到RuntimeWarning的錯誤,例如,使用pandas讀取表格中的內(nèi)容,并轉(zhuǎn)換到基本python類型,如果表格內(nèi)容為nan,會提示以下警告。


此外,numpy中出現(xiàn)/0時,會發(fā)現(xiàn)應(yīng)該捕獲除0異常的地方,卻沒有拋出異常(numpy自身機制處理,不拋出異常),程序反而”正?!皥?zhí)行下去。

如以下程序:

(除0結(jié)果是nan,沒有拋出異常,只提示了警告)


(將nan轉(zhuǎn)換為int,顯示警告,但不影響程序執(zhí)行)

因此,有時候我們也需要捕獲這些警告,幫助我們查找問題或者避免意想不到的問題。

2.處理方法

(1)if判斷

像在numpy中,可以使用np.isnan判斷是否為空等

(2)numpy.seterr

通過seterr可以設(shè)置各種數(shù)字異常時的處理行為,

數(shù)字異常包括:

●?all:所有數(shù)字異常

●?under:浮點數(shù)下溢

●?invalid:無效,無效生成nan時

●?divide:除以0

●?over:浮點溢出

異常處理行為如下:

●?'ignore':發(fā)生異常時不采取任何措施。

●?'warn':打印?RuntimeWarning?(通過Python?warnings模塊)。

●?'raise':引發(fā)?FloatingPointError?。

●?'call':調(diào)用使用?seterrcall?函數(shù)指定的函數(shù)。

●?'print':直接打印警告stdout。

●?'log':在?seterrcall?指定的Log對象中記錄錯誤。

因此,使用seterr時,可以設(shè)置為”raise“,并通過try-excep來捕獲異常處理。如以下代碼

(3)warnings模塊

使用warnings模塊+try-except可以捕獲python中的所有警告,并進行異常處理。

warnings使用filterwarnings過濾器來處理警告:

注意的是,seterr僅適用numpy,而warnings不限制模塊。如下代碼所示(此時不用設(shè)置seterr,因為默認(rèn)處理方法就是warning)

3.? 參考資料

https://blog.csdn.net/TeFuirnever/article/details/94122670

https://www.jianshu.com/p/907107c7173d

https://stackoverflow.com/questions/15933741/how-do-i-catch-a-numpy-warning-like-its-an-exception-not-just-for-testing


python 警告捕獲(RuntimeWarning Catch)的評論 (共 條)

分享到微博請遵守國家法律
吴堡县| 汤原县| 资兴市| 长子县| 体育| 墨玉县| 永年县| 长兴县| 明溪县| 湖北省| 滨海县| 弥勒县| 丁青县| 饶河县| 伊金霍洛旗| 庐江县| 华容县| 榆树市| 黄大仙区| 凤凰县| 沂南县| 响水县| 新昌县| 阿拉善左旗| 临颍县| 崇州市| 江西省| 宁远县| 石嘴山市| 彩票| 中卫市| 兰坪| 彰化市| 家居| 灌阳县| 沁水县| 泾阳县| 湘潭县| 林周县| 松阳县| 呼玛县|