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() 関数の詳細については、公式ドキュメントこちらを参照してください。
