Базовый CS с нуля
Когда программа падает: тест на припоминание
Припоминание сильнее перечитывания. Для каждого вопроса скажи или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет различения: условие против механизма, громкое против тихого, рассуждение против угадывания.
Восстанови костяк юнита, не подглядывая: error против exception, как раскручивается стек, что такое trace и как его читать, почему undefined behaviour — опасный случай, и что делает debugging рассуждением, а не угадыванием.
- 01В чём разница между error и exception?
- 02Пройди по тому, что делает рантайм, когда exception поднят и обработчик не найден.
- 03Что такое stack trace, где в нём throw site и как его читать?
- 04Что такое undefined behaviour и почему оно опаснее defined error?
- 05Почему детерминизм машины делает debugging рассуждением, а не угадыванием?
- 06Назови три приёма проверки гипотезы при debugging и объясни, почему throw site не всегда есть причина.
Если ты смог восстановить каждый ответ по памяти, ты держишь костяк юнита: error — условие, exception — механизм, который останавливает поток и раскручивает стек в поиске обработчика; stack trace — этот стек, замороженный на throw, читаемый сверху вниз, throw site наверху; undefined behaviour — опасный тихий сбой без поднятия error; а поскольку машина детерминирована, debugging — это рассуждение: сформулируй гипотезу, сузь диапазон, прочитай trace, проверь состояние и иди по цепочке за throw site к реальной причине, прежде чем менять строку.