私は "raise"の公式な定義を読みましたが、それが何をするのかまだよくわかりません。
簡単に言えば、「レイズ」とは何ですか?
使用例が役立ちます。
2つの目的があります。
それはあなた自身のエラーを引き起こすために使われます。
if something: raise Exception('My error!')
もう1つは、例外ハンドラーで current exceptionを再発生させることです。これにより、呼び出しスタックのさらに上に処理できるようになります。
try:
generate_exception()
except SomeException as e:
if not can_handle(e):
raise
handle_exception(e)
引数なしのraise
はpython構文の特別な用途です。それは例外を取得してそれを再発生させることを意味します。この使用法であれば、reraise
と呼ばれている可能性があります。
raise
From Python言語リファレンス :
式が存在しない場合、raiseは現在のスコープでアクティブだった最後の例外を再発生させます。
引数なしでraise
を単独で使用する場合は、 reraise --ingに厳密に使用されます。別の例外が発生しない状況で実行すると、次のエラーが表示されます。RuntimeError: No active exception to reraise
raise Exception("message")
とraise
に加えて、Python 3は新しい形式raise Exception("message") from e
を導入しました。これは例外チェーンと呼ばれ、元の例外(根本原因)をそのトレースバックで保存することを可能にします。
C#の内部例外と非常によく似ています。
raise
は例外を発生させます。他の言語では代わりに動詞 'throw'を使用します。
これはエラー状況を知らせるためのものです。状況が通常のフローに対して例外的であることを示します。
try
とexcept
の組み合わせを使用して、例外を処理するためのコード 'upstream'(周囲のブロック、またはスタックの前の方の関数)によって、発生した例外を再度キャッチすることができます。
エラーチェックの一部としてエラーを発生させるためにそれを使うことができます:
if (a < b):
raise ValueError()
あるいは、いくつかのエラーを処理してからエラー処理の一部としてそれらを渡します
try:
f = open('file.txt', 'r')
except IOError:
# do some processing here
# and then pass the error on
raise