Как использовать ключевое слово "raise" в Python [дубликат]

этот вопрос уже есть ответ здесь:

Я прочитал официальное определение "поднять", но я все еще не совсем понимаю, что он делает.

проще говоря, что такое "поднять"?

пример использования поможет.

6 ответов


Он имеет 2 цели.

yentup дал первый.

Он используется для повышения ваших собственных ошибок.

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

во-вторых, чтобы reraise настоящее исключение в обработчике исключений, чтобы его можно было обрабатывать дальше по стеку вызовов.

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)

Он используется для создания ошибок.

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

примеры здесь


raise без каких-либо аргументов-это специальное использование синтаксиса Python. Это означает получить исключение и повторно поднять его. Если это использование можно было бы назвать reraise.

    raise

С Ссылка На Язык Python:

если нет выражений, raise повторно вызывает последнее исключение, которое был активен в текущем объеме.

если raise используется отдельно без каких-либо аргументов, строго используется для reraise - ing. Если это сделано в ситуации, которая не находится при повторном вызове другого исключения, отображается следующая ошибка: RuntimeError: No active exception to reraise


Вы можете использовать его для создания ошибок в рамках проверки ошибок:

if (a < b):
    raise ValueError()

или обрабатывать некоторые ошибки, а затем передавать их как часть обработки ошибок:

try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise

raise вызывает исключение. В некоторых других языках вместо этого используется глагол "throw".

Он предназначен для сигнализации ситуации ошибки; он отмечает, что ситуация является исключительной для нормального потока.

поднятые исключения могут быть пойманы снова кодом "вверх по течению" (окружающий блок или функция ранее в стеке), чтобы обработать его, используя try, except комбинации.


кроме того raise Exception("message") и raise Python 3 представил новую форму,raise Exception("message") from e. Это называется цепочкой исключений, она позволяет сохранить исходное исключение (первопричину) с его обратной трассировкой.

Это очень похоже на внутренние исключения из C#.

Подробнее: https://www.python.org/dev/peps/pep-3134/