kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

例外のみ捕捉する

  前回紹介した方法では、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」を再起動しても良いです。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション