しょっちゅう忘れることを書いておく。
![]() |
66 |
1633 views
import traceback
if __name__ == '__main__':
try:
# 処理
except:
print(traceback.format_exc())
traceback
モジュールは、エラーの詳細なトレースバック(スタックトレース)を取得するために使用されます。try
ブロックで実行するコードを記述し、例外が発生した場合はexcept
ブロックが実行されます。traceback.format_exc()
を使うことで、直近に発生した例外のトレースバックを文字列として取得し、print
で表示します。これにより、どのようなエラーがどこで発生したのかを詳細に確認できます。traceback
が使えない場合の対処方法#coding:UTF-8
import sys
import inspect
if __name__ == '__main__':
try:
with open("notexist.txt") as f:
f.read()
except:
# 例外の種類を表示
print(str(sys.exc_info()[0]))
# 例外メッセージを表示
print(str(sys.exc_info()[1]))
# トレースバックオブジェクトを取得して詳細情報を表示
traceback_object = sys.exc_info()[2]
while traceback_object:
print(inspect.getframeinfo(traceback_object.tb_frame))
traceback_object = traceback_object.tb_next
sys.exc_info()
は、現在発生している例外に関する情報を返します。これは3つの要素を含むタプルで、(例外の型, 例外の値, トレースバックオブジェクト)
が含まれます。str(sys.exc_info()[0])
とstr(sys.exc_info()[1])
で、例外の種類とメッセージを表示します。sys.exc_info()[2]
で取得したトレースバックオブジェクトを使って、手動でトレースバックを表示します。inspect.getframeinfo()
を使用して、エラーが発生した場所の詳細(ファイル名、行番号など)を取得し、それを表示します。traceback
モジュールが使用できない場合の代替手段として役立ちます。traceback
が利用できる環境では、traceback.format_exc()
が簡単で便利です。詳細なトレースバックを簡単に取得できます。traceback
が使えない場合、sys
とinspect
を組み合わせて手動でトレースバックを再現できます。これにより、エラーの発生場所や詳細な情報を表示可能です。Page 11 of 69.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/