#python #exception
#python #исключение
Вопрос:
Я читаю фрагмент кода, который извлекает данные из базы данных. Предполагается, что «Результат» должен содержать извлеченные записи базы данных.
try:
for record in result:
products.append(record['p'])
except ServiceUnavailable as exception:
logger.error("{query} raised an error: n {exception}".format(
query=query, exception=exception))
raise
В Python ключевое слово ‘raise’ завершает работу программы или нет при возникновении исключения? Если оно завершается, должен ли я удалить «повышение» и регистрировать только эту ошибку, чтобы один сбой при поиске базы данных не привел к сбою всей системы. Это верно?
Ответ №1:
Голый raise
перебрасывает исключение, обнаруженное в except
блоке. Завершится ли программа или нет, зависит от вызывающего абонента — если он перехватит и обработает это исключение, программа может продолжить работу. Если этого не произойдет, программа завершится (ненормально).
Комментарии:
1. Если я не хочу, чтобы это завершалось, и я могу изменить этот код, и если я просто удалю «повышение», программа не выйдет из строя. Верно?
2. @marlon если вы этого не
raise
сделаете, исключение будет перехвачено, и программа не завершится.