309

「レイズ」の正式な定義を読みましたが、それが何をするのかまだよくわかりません。

「上げる」とは、簡単に言うと?

使用例が役立ちます。

4

6 に答える 6

377

それには2つの目的があります。

jackcogdill が最初のものを与えました。

独自のエラーを発生させるために使用されます。

if something:
    raise Exception('My error!')

2 つ目は、例外ハンドラーで現在の例外を再発生させて、コール スタックのさらに上で処理できるようにすることです。

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)
于 2012-12-19T17:32:03.200 に答える
50

raise引数なしは、Python 構文の特別な使用法です。これは、例外を取得して再発生させることを意味します。この用法なら と呼ばれていたかもしれませんreraise

    raise

Python言語リファレンスから:

式が存在しない場合、raise は現在のスコープでアクティブだった最後の例外を再発生させます。

引数なしで単独で使用される場合raiseは、厳密にreraise -ing に使用されます。別の例外が再発生していない状況で実行すると、次のエラーが表示されます。 RuntimeError: No active exception to reraise

于 2015-01-14T16:21:12.063 に答える
49

エラーを発生させるために使用されます。

if something:
    raise Exception('My error!')

ここにいくつかの例

于 2012-12-19T17:28:28.097 に答える
17

これを使用して、エラー チェックの一部としてエラーを発生させることができます。

if (a < b):
    raise ValueError()

または、いくつかのエラーを処理してから、エラー処理の一部としてそれらを渡します。

try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise
于 2012-12-19T17:32:47.650 に答える
12

raise例外が発生します。他のいくつかの言語では、代わりに動詞「throw」を使用します。

これは、エラー状況を通知することを目的としています。これは、状況が通常のフローとは異なることを示しています。

発生した例外は、コード'upstream'(周囲のブロック、またはスタックの前の関数)によって再度キャッチされ、、の組み合わせを使用して処理されtryますexcept

于 2012-12-19T17:30:15.363 に答える