Исключения - как система проверки прочности в гача-играх. Если что-то идёт не так, у нас есть механизм защиты! Они позволяют обрабатывать ошибки и необычные ситуации в программе. Вместо аварийного завершения программы, мы можем корректно обработать проблему.
# Простой try-except
try:
primogems = int(input("Сколько примогемов потратить? "))
if primogems < 0:
raise ValueError("Отрицательное количество примогемов!")
except ValueError as e:
print(f"Ошибка: {e}")
# Несколько типов исключений
try:
character = characters[0]
talent_level = character["talents"]["normal"]
except IndexError:
print("Список персонажей пуст!")
except KeyError:
print("У персонажа нет данных о талантах!")
# Полная структура try-except
try:
wishes = pull_banner(primogems)
if wishes == 0:
raise Exception("Недостаточно примогемов!")
except Exception as e:
print(f"Ошибка при круткax: {e}")
else:
# Выполняется если не было исключений
print(f"Успешно потрачено {primogems} примогемов")
finally:
# Выполняется всегда
print(f"Остаток примогемов: {current_primogems}")
# Собственные классы исключений
class NotEnoughMaterialsError(Exception):
pass
class TalentLevelError(Exception):
pass
def level_up_talent(character, books, mora):
if books < 3:
raise NotEnoughMaterialsError(
"Недостаточно книг талантов!"
)
if mora < 12500:
raise NotEnoughMaterialsError(
"Недостаточно моры!"
)
Создайте безопасную систему улучшения артефактов с обработкой всех возможных ошибок.
Возможные проблемы:
Реализуйте:
# Пример структуры исключений
class ArtifactError(Exception):
"""Базовый класс для ошибок артефактов"""
pass
class MaxLevelError(ArtifactError):
"""Артефакт максимального уровня"""
pass
def enhance_artifact(artifact, materials, mora):
try:
# Проверки и улучшение
log_operation("start_enhance", artifact)
# ...
except ArtifactError as e:
log_operation("error", str(e))
raise
else:
log_operation("success", artifact)
save_changes()