Винятки — це помилки, які виникають під час виконання програми. Python дозволяє їх перехоплювати та обробляти.
Синтаксис:
try:
# код, який може викликати помилку
except ТипПомилки:
# що робити при цій помилці
else:
# виконується якщо винятків не було
finally:
# виконується завжди (очищення ресурсів)
Часті винятки:
• ValueError — невірне значення (int('abc'))
• ZeroDivisionError — ділення на нуль
• FileNotFoundError — файл не знайдено
• KeyError — ключ не знайдено у словнику
• IndexError — індекс поза діапазоном
• TypeError — невірний тип даних
try:
a = float(input('Перше число: '))
b = float(input('Друге число: '))
op = input('Операція (+, -, *, /): ')
if op == '+': print(a + b)
elif op == '-': print(a - b)
elif op == '*': print(a * b)
elif op == '/':
if b == 0: raise ZeroDivisionError
print(a / b)
else: print('Невідома операція')
except ValueError:
print('Помилка: введіть число')
except ZeroDivisionError:
print('Помилка: ділення на нуль')
def safe_int_input(prompt):
while True:
try:
value = int(input(prompt))
return value
except ValueError:
print('Помилка! Введіть ціле число.')
age = safe_int_input('Введіть ваш вік: ')
while age < 1 or age > 120:
print('Вік має бути від 1 до 120')
age = safe_int_input('Введіть ваш вік: ')
print(f'Ваш вік: {age}')
import os
if not os.path.exists('numbers.txt'):
with open('numbers.txt', 'w', encoding='utf-8') as f:
f.write('10\n20\nаbc\n30\nxyz\n50\n')
print('Файл створено з тестовими даними')
total = 0
errors = 0
count = 0
with open('numbers.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
try:
num = float(line)
total += num
count += 1
except ValueError:
print(f'Пропущено некоректний рядок: "{line}"')
errors += 1
print(f'Прочитано чисел: {count}')
print(f'Сума: {total}')
print(f'Помилок: {errors}')