Python で例外を出力する
Python では、例外はエラーです。Python には、TypeError
、SyntaxError
、KeyError
、AttributeError
などの多くのエラーまたは例外があります。これらのブロックがないと、これらの例外を処理するために Python で try-except-finally
を使用します。これらの例外は、プログラムの実行を停止します。Python の try-except-finally
ブロックを使用すると、プログラムの実行を停止せずにこれらの例外を出力できます。
Python で try-except-finally
ブロックを使用して例外を出力する
次のコードスニペットについて考えてみます。
dictionary = {
"hello": "world",
}
number = 25
try:
number = number + dictionary["hello"]
print(number)
except Exception as e:
print(repr(e))
出力:
TypeError("unsupported operand type(s) for +: 'int' and 'str'",)
上記のコードでは、最初に、文字列値 world
を指すキーとして hello
を使用し、変数 number
を使用して辞書を初期化します。次に、try
ブロック内で、dictionary
に格納されている文字列値にアクセスし、それを number
変数に追加しようとしています。
整数
に文字列
を追加することは不可能であるため、このステートメントは実際的にも概念的にも間違っています。したがって、except
ブロックはこのエラーをキャッチし、この例外に関連付けられた Exception
オブジェクトをコンソールに出力します。
Python で traceback
モジュールを使用して例外を出力する
Python には、例外を出力およびフォーマットするための組み込みモジュール traceback
があります。また、コンソールで例外全体を簡単に出力できます。
Python では、raise
キーワードを使用して手動で例外を発生させることができます。次のコードスニペットでは、raise
キーワードを使用して、try
ブロック内で例外を発生させます。
import traceback
try:
raise KeyError
except Exception as e:
traceback.print_exc()
出力:
Traceback (most recent call last):
File ".\main.py", line 4, in <module>
raise KeyError
KeyError
上記のコードでは、KeyError
例外を発生させ、モジュール traceback
の print_exc()
関数を使用して例外を出力します。この関数は、例外に関する情報を出力し、traceback.print_exception(*sys.exc_info(), limit, file, chain)
の省略形です。
print_exception()
関数の詳細については、公式ドキュメントこちらを参照してください。