Я прочитал официальное определение "рейз", но я до сих пор не совсем понимаю, что он делает.
Проще говоря, что такое "рейз"?
Пример использования поможет.
Я прочитал официальное определение "рейз", но я до сих пор не совсем понимаю, что он делает.
Проще говоря, что такое "рейз"?
Пример использования поможет.
У этого есть 2 цели.
Используется для создания собственных ошибок.
if something: raise Exception('My error!')
Второе - это сделать ререйз текущего исключения в обработчике исключений, чтобы он мог обрабатываться далее в стеке вызовов.
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
используется отдельно, без каких-либо аргументов, строго используется для ререйза -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
. Он называется цепочкой исключений, он позволяет сохранить исходное исключение (основную причину) с его трассировкой.
Он очень похож на внутренние исключения из С#.
Дополнительная информация: https://www.python.org/dev/peps/pep-3134/