Українська
Підсумки
Висновки
Пошук дефекту починається з відтворюваного прикладу. Налагоджувач показує стан, але пояснення причини потребує розуміння типів, меж і інваріантів. RAII підтримує звільнення ресурсів при винятках. Expected робить помилку явною частиною результату. Кожний інтерфейс має визначати стан після невдачі.
Питання для самоперевірки
- Чим логічна помилка відрізняється від UB?
- Що потрібно для відтворюваного прикладу?
- Як відрізняються F10,F11,Shift+F11?
- Коли корисна умовна точка зупинки?
- Чому Watch-вираз може змінити стан?
- Чому assert не перевіряє введення в усіх збірках?
- Що знищується при розкручуванні стека?
- Навіщо catch за const посиланням?
- Чим throw; відрізняється від throw error;?
- Що стається при порушенні noexcept?
- Що гарантує строга безпека винятків?
- Коли optional недостатньо?
- Яка передумова виклику error()?
- Чим and_then відрізняється від transform?
- Чому C++26 у назві курсу не гарантує debugging API?
Контрольні питання до лабораторної роботи
- Що таке перша точка розбіжності?
- Коли потрібний Step Into?
- Чим thrown-зупинка відрізняється від unhandled?
- Навіщо власний тип винятку?
- Чому exception перехоплюють за const&?
- Як RAII працює під час винятку?
- Що означає noexcept?
- Що зберігає строга гарантія?
- Коли доречний expected?
- Чому assert не замінює перевірку введення?
Корисні посилання
- Винятки: https://learn.microsoft.com/cpp/cpp/errors-and-exception-handling-modern-cpp.
- Налагодження: https://learn.microsoft.com/visualstudio/debugger/getting-started-with-the-debugger-cpp.
- Реалізація expected у MSVC: https://github.com/microsoft/STL/blob/main/stl/inc/expected.
- Hot Reload: https://learn.microsoft.com/visualstudio/debugger/hot-reload.