0Pricing
Flask Academy · Урок

Создание классов пользовательских исключений

Определяйте ошибки предметной области, преобразуемые в JSON.

«Создание классов пользовательских исключений» — бесплатный урок Flask Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flask Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flask Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Errors That Speak Your Domain

Numbers like 400 are generic. A custom exception names the real problem, such as a payment that failed or a quota hit.

Subclass an Exception

You start by defining a class that inherits from Exception. This gives you a clear, raisable error of your own.

class PaymentError(Exception):
    pass

Add a Status Code

Give the class a status_code attribute so a handler knows which HTTP code to send when it fires.

class PaymentError(Exception):
    status_code = 402

Carry a Message

Store a human message in the constructor. Your handler can later read it and place it into the response body.

def __init__(self, message):
    self.message = message

Raise It in a View

Inside a view you simply raise the error when something goes wrong. Flask then looks for a matching handler.

if not paid:
    raise PaymentError("Card declined")

Handle the Custom Class

Register an errorhandler for your class. It receives the instance, so you can read both its message and status code.

@app.errorhandler(PaymentError)
def on_pay(e):
    return e.message, e.status_code

Return JSON From It

For an API, turn the error into JSON inside the handler. Clients get a structured failure they can parse reliably.

return jsonify(error=e.message), e.status_code

One Base for Many Errors

Make a single base class and let specific errors subclass it. Then one handler can cover your whole error family.

class ApiError(Exception):
    pass

Default Sensible Values

Give the base a default status_code like 400. Subclasses override it only when they need a different one.

class ApiError(Exception):
    status_code = 400

Keep Logic Out of Views

Raising domain errors lets views stay short. The handler owns formatting, so each view just signals what went wrong.

Why This Scales

As an app grows, custom exceptions keep error logic in one tidy spot. New error types plug into the same clean pipeline.

Quick Check

How does a view trigger your domain error?

Recap

You built custom exception classes with a status code and message, raised them in views, and mapped them to clean JSON. Awesome!

Часто задаваемые вопросы

Урок «Создание классов пользовательских исключений» бесплатный?

Да — полный текст урока «Создание классов пользовательских исключений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flask Academy, подпишись на CoddyKit PRO. Курс Flask Academy содержит 4 уроков всего.

Чему я научусь в уроке «Создание классов пользовательских исключений»?

Определяйте ошибки предметной области, преобразуемые в JSON. Ты практикуешь Flask Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Flask Academy?

Предыдущий опыт не требуется. Flask Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Создание классов пользовательских исключений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Flask Academy?

Да. Каждый урок Flask Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. abort и коды ошибок HTTP
  2. Регистрация функций errorhandler
  3. Создание классов пользовательских исключений
  4. Единый формат оболочек ошибок JSON
← Назад к Flask Academy