Поймал момент, когда приложение «молча» возвращало не то — и я не мог понять почему. Оказалось, спрятанная ошибка проглочена глухой обработкой. Стыдно за такой стиль; хорошо, что вовремя сменил подход: ошибки должны быть видимы и понятны, а клиент — получать честный ответ.
Нейтрально: обрабатывать надо конкретные исключения, логировать причину и возвращать осмысленный код, а не «поймали всё молча».
import logging
logger = logging.getLogger(__name__)
def create_item(name):
if not name or not name.strip():
raise ValueError("Пустое имя элемента")
def api_create(request):
try:
item = create_item(request.POST.get("name"))
return JsonResponse({"id": item.id}, status=201)
except ValueError as e:
logger.warning("не создан: %s", e)
return JsonResponse({"error": str(e)}, status=400)
Смена восприятия — от «спрятать» к «показать» — продвинула меня глубже, чем любая зубрёжка. Теперь код ведёт себя предсказуемо даже при плохом вводе, а у меня меньше ночных «а что случилось?».