例外のみ捕捉する
前回紹介した方法では、Pythonのアプリで発生した警告と例外を捕捉していました。ここでは、警告を捕捉せず例外のみを捕捉するように変更します。
1.ソースコード
前回使用したソースコードを利用して、以下のように変更します。#!/usr/bin/python3 #-*- coding:utf-8 -*- import warnings import send_tracebacks send_tracebacks.install(showwarning=False) warnings.warn('警告') raise Exception('例外')
ポイントは、以下の記述です。
send_tracebacks.install(showwarning=False)
これで例外のみを捕捉できるようになります。
2.スクリプトの実行
ここでは例として「端末」を起動し、「端末」から上記のPythonスクリプトを実行します。Pythonスクリプトを実行すると、警告や例外の情報が標準出力に出力されるため、上記のように警告や例外の情報が「端末」に表示されます。
3.警告や例外の捕捉
「gedit」を見ると、以下のように捕捉された例外のみが「Python Traceback」タブに表示されています。Python Tracebackの内容をPythonから削除する
「Python Traceback」タブに表示されているを、Pythonから削除することができます。1.ソースコード
以下のソースコードを使用します。#!/usr/bin/python3 # -*- coding:utf-8 -*- import send_tracebacks send_tracebacks.send_dbus_clear()
ポイントは以下のコードです。
send_tracebacks.send_dbus_clear()
引数について
引数に削除する時間を指定することができます。警告や例外などの情報は、その情報が発生した時間(time.time())を保持しています。
引数に時間を指定した場合、指定された時間よりも前に出力された情報は全て削除されます。
引数を省略した場合は、time.time()が設定されます。
2.Python Tracebackの内容
コードを実行する前に、「Python Traceback」の内容を確認します。現状以下のように情報が出力されています。
3.スクリプトの実行
ここでは例として「端末」を起動し、「端末」から上記のPythonスクリプトを実行します。4.Python Tracebackの内容
コードを実行すると、以下のように情報が削除されます。注意
「send_tracebacks.send_dbus_clear()」を呼び出すと、指定された時間より前に出力される内容は、これ以降も自動的に削除されます。(出力されなくなる)「Python Traceback」に任意の情報を出力する場合、時間の指定が可能ですが、「send_tracebacks.send_dbus_clear()」の呼び出しの影響を受けるため注意してください。
「send_tracebacks.send_dbus_clear()」による自動削除を無効にするには、以下のコードを記述します。
send_tracebacks.send_dbus_clear(0)
これで自動削除が無効になります。
あるいは、「gedit」を再起動しても良いです。