Как использовать ключевое слово "raise" в Python

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

Проще говоря, что такое "рейз"?

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

Ответ 1

У этого есть 2 цели.

yentup дал первый.

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

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

Второе - это сделать ререйз текущего исключения в обработчике исключений, чтобы он мог обрабатываться далее в стеке вызовов.

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

Ответ 2

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

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

Некоторые примеры здесь

Ответ 3

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

    raise

От Справочник по языку Python:

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

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

Ответ 4

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

if (a < b):
    raise ValueError()

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Дополнительная информация: https://www.python.org/dev/peps/pep-3134/