try...except
.
Код, который потенциально может вызвать ошибку, помещается в блок try
.
Если в блоке try
возникает исключение, то выполнение блока прерывается,
и управление передается блоку except
, соответствующему типу возникшего исключения.
try:
# Код, который может вызвать ошибку
result = 10 / 0
except ZeroDivisionError:
# Обработка ошибки деления на ноль
print("Ошибка: Деление на ноль!")
except Exception as e:
# Обработка других типов ошибок
print(f"Произошла ошибка: {e}")
finally:
# Код, который выполняется всегда, независимо от наличия ошибки (необязательно)
print("Блок finally")
Блок finally
выполняется всегда, независимо от того, было ли исключение или нет (он необязателен).
Можно указать несколько блоков except
для обработки разных типов исключений.
Обработка ошибок с использованием try
и except
в Python позволяет вам корректно реагировать на исключения, возникающие во время выполнения кода, предотвращая аварийное завершение программы.
Общая структура блока try-except
выглядит следующим образом:
try:
# Код, который может вызвать исключение
# Например:
result = 10 / 0 # Деление на ноль
print("Этот код не выполнится, если произойдет исключение")
except ExceptionType as e:
# Код, который будет выполнен, если произойдет исключение типа ExceptionType
# Например:
print(f"Произошла ошибка: {e}")
except AnotherExceptionType as e:
# Код, который будет выполнен, если произойдет исключение типа AnotherExceptionType
print(f"Произошла другая ошибка: {e}")
else:
# Код, который будет выполнен, если в блоке try не произошло никаких исключений
print("Всё прошло успешно!")
finally:
# Код, который будет выполнен в любом случае, независимо от того, произошло исключение или нет.
# Часто используется для освобождения ресурсов (закрытие файлов, соединений и т.д.)
print("Этот код выполнится всегда")
Пояснения:
try
: Здесь располагается код, который потенциально может вызвать исключение.except ExceptionType as e
: Этот блок перехватывает исключения указанного типа (ExceptionType
). as e
позволяет получить доступ к объекту исключения, содержащему информацию об ошибке. Вы можете указать несколько блоков except
для обработки разных типов исключений. Если тип исключения не соответствует ни одному из блоков except
, то исключение не будет перехвачено и программа завершится с ошибкой. Рекомендуется указывать конкретные типы исключений, вместо перехвата всех исключений (except Exception:
), чтобы избежать скрытия неожиданных ошибок.else
: Этот блок выполняется только в том случае, если в блоке try
не возникло никаких исключений. Он позволяет отделить код, который должен быть выполнен только при успешном выполнении блока try
.finally
: Этот блок выполняется всегда, независимо от того, произошло исключение в блоке try
или нет. Он обычно используется для освобождения ресурсов, например, для закрытия файлов или сетевых соединений.Пример обработки конкретных исключений:
try:
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
result = num1 / num2
print(f"Результат деления: {result}")
except ValueError as e:
print(f"Ошибка: Введены некорректные данные. Пожалуйста, введите числа. {e}")
except ZeroDivisionError as e:
print(f"Ошибка: Деление на ноль недопустимо. {e}")
except Exception as e:
print(f"Произошла неизвестная ошибка: {e}")
finally:
print("Программа завершена.")
Ключевые моменты:
finally
гарантирует выполнение критически важного кода, независимо от того, произошла ошибка или нет.try-except
улучшает надежность и стабильность ваших Python программ.Таким образом, try-except
- это мощный инструмент для написания устойчивого к ошибкам кода.