最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
潜山县| 新宁县| 蒲城县| 兴业县| 化德县| 丰宁| 讷河市| 道真| 上饶县| 伊宁县| 东乡族自治县| 武宣县| 塔河县| 翁牛特旗| 海口市| 富阳市| 呼和浩特市| 嘉义县| 彭水| 塘沽区| 田阳县| 通榆县| 石门县| 炉霍县| 读书| 梅河口市| 清涧县| 香河县| 兴业县| 米脂县| 墨竹工卡县| 越西县| 安龙县| 衡山县| 孝义市| 筠连县| 昆明市| 九龙坡区| 麻江县| 廉江市| 买车|