JavaRush
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема

Лекции

  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Мое обучение
  • Курсы
  • Университет
  • Карта квестов
  • Лекции
  • RAII + исключения

    C++ SELF
    54 уровень,0 лекция
    Разбираем, почему в C++ ресурсы автоматически освобождаются при исключениях (размотка стека и вызов деструкторов), чем RAII спасает от утечек, но не спасает от «частично применённых» изменений, как формулировать и удерживать инварианты класса, и почему порядок действий в методе критичен для исключений (на примерах с std::vector, push_back, счётчиком next_id_ и рассинхронизацией индексов). В конце — практические приёмы и типичные ошибки, включая правило: деструкторы не должны выбрасывать исключения.
    Открыта
  • Гарантии exception safety: basic / strong / no‑throw

    C++ SELF
    54 уровень,1 лекция
    Разбираем, что именно обещает метод при исключении: валидность объекта ( basic guarantee ), “либо всё, либо ничего” ( strong guarantee ) и запрет на выход исключений наружу ( no‑throw guarantee ). На примерах в стиле TaskTracker показываем, как поддерживать инварианты между std::vector и индексами, как делать откат через try/ catch и зачем аккуратно использовать noexcept.
    Открыта
  • Идиома commit/rollback

    C++ SELF
    54 уровень,2 лекция
    Разбираем, почему RAII спасает ресурсы, но не гарантирует сохранность инвариантов объекта при исключениях, и как идиома commit/rollback помогает получить «либо всё, либо ничего». Учимся разделять метод на prepare → commit → rollback, применять временные объекты и swap как короткий шаг коммита, строить сильную гарантию исключений и понимать copy-and-swap как частный случай этого подхода на примере TaskStore.
    Открыта
  • noexcept — практический смысл

    C++ SELF
    54 уровень,3 лекция
    Разбираем noexcept как жёсткий контракт «исключения не выходят наружу»: что именно считается границей функции, почему нарушение приводит к std::terminate, где пометка уместна (геттеры, swap, деструкторы) и где опасна (парсинг, рост контейнеров). Отдельно рассматриваем условный вариант noexcept(expr), проверки через static_assert и практику на примере TaskBook.
    Открыта
  • Как думать об ошибках — инварианты до/после

    C++ SELF
    54 уровень,4 лекция
    Разбираем «взрослый» взгляд на ошибки в C++: контракт метода (предусловия, постусловия и гарантия при исключении), инварианты объекта и техники prepare/ commit для получения сильной гарантии («либо всё, либо ничего»). На примере мини-класса TaskList учимся валидировать вход до изменений, проверять инварианты через validate_invariant() и тестировать крайние сценарии, включая «падение посередине операции».
    Открыта
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush