alexey-goloburdin/telegram-finance-bot

try except

NMelis opened this issue · 3 comments

async def add_expense(message: types.Message):

Предлагаю поправить функцию

@dp.message_handler()
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    try:
        expense = expenses.add_expense(message.text)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
        f"{expenses.get_today_statistics()}")
    await message.answer(answer_message)

на

@dp.message_handler()
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    try:
        expense = expenses.add_expense(message.text)

>        answer_message = (
>            f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
>            f"{expenses.get_today_statistics()}")
>        await message.answer(answer_message)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))

Если рассматривать этот проект для себя то да, видеть stacktrace и название ошибки нам как программистам в телеграме будет удобно. Но как общая практика это не очень хорошо, показывать пользователям страшные ошибки — их надо логировать, причем настроить логирование так, чтобы точно любая непредвиденная фигня точно попала в лог с полным трейсом на момент ошибки.

@alexey-goloburdin да все верно, я ничего не имею против, просто у вас return в блоке except выглядит не красиво, чтобы это убрать я просто код после return перемести в блок try - от этого ничего не меняется в логике, так по мне выглядет по потонячее

@NMelis может тогда лучше вынести логику отправки в блок else?