Pythonはどのように警告をキャッチしますか?(注:例外をキャッチしないでください)

1.警告も例外ではありません

いくつかのシステムライブラリまたはサードパーティモジュールを頻繁に使用し、例外でもエラーでもない警告メッセージが表示されますか?

これらの警告メッセージは、時には非常に多く、プログラムが間違っていると考えて、初心者にとって簡単に誤解を招く可能性があります。

実際にはそうではありません。例外やエラーはプログラムのいくつかの問題ですが、警告は異なります。緊急性は非常に低いため、ほとんどの警告は直接無視できます。

これらのアラーム情報を表示したくない場合は、パラメータ-W ignoreパラメータを直接追加すると、表示されなくなります。

2.警告をキャッチできますか?

キャッチできるのはエラー例外のみですが、一連の操作の後、これらの警告を例外に変えることができます。

このようにして、例外のようにそれらをキャッチできます。

設定がない場合、警告は端末に直接印刷されます。

 

3.警告をキャッチする方法1

警告には一連のフィルターがあります。

エラーとして指定すると、一致する警告が例外に変換されます。

次に、例外によって警告をキャッチできます。

import warnings
warnings.filterwarnings('error')    

try:
    warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
    print(e)

実行後の効果は以下のとおりです

 

4.警告をキャッチする2番目の方法

コードで構成したくない場合は、警告を例外に変えてください。

import warnings

try:
    warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
    print(e)

実行時にパラメータ-Wエラーを追加するだけで、同じ効果が得られます

$ python3 -W error demo.py
deprecated

5.警告をキャッチする3番目の方法

上記の方法に加えて、警告には、警告をキャプチャするためのコンテキストマネージャも付属しています。

record = Trueを追加すると、キャプチャされたすべての警告が格納されているリストが返されます。これをwに割り当てると、印刷できます。

import warnings

def do_warning():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings(record=True) as w:
    do_warning()
    if len(w) >0:
        print(w[0].message)

実行後の効果は以下のとおりです

 

自分で作成したPython学習グループ:705933274を引き続きお勧めします。全員がPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、最新のPythonの高度な資料のコピーや、2021年に私が編集したゼロベースの教育など、随時(Pythonソフトウェア開発に関連するもののみ)。高度でPythonに興味のある友人を歓迎します。

 

おすすめ

転載: blog.csdn.net/pyjishu/article/details/114748759