例外を発生させます。エラーを通知する適切な方法であるだけでなく、デバッグにも役立ちます。トレースバックには、メソッド呼び出しを行った行だけでなく、変数名だけでなくデバッグに役立つ追加の行、行番号、関数名なども含まれます。例:
class A:
def do(self, x):
if x < 0:
raise ValueError("Negative x")
def wrong(a, x):
a.do(-x)
wrong(A(), 1)
例外がキャッチされない場合、これは次のようなトレースバックを返します。
Traceback (most recent call last):
File "...", line 1, in <module>
wrong(A(), 1)
File "...", line 7, in wrong
a.do(-x)
File "...", line 4, in do
raise ValueError("Negative x")
ValueError: Negative x
このモジュールを使用してtraceback
、例外 (print_stack
および友人) がなくても、プログラムでこの情報を取得することもできます。