awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

Когда программа падает: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту: error против exception, раскрутка стека, чтение stack trace, undefined behaviour и debugging как рассуждение.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый — небольшое решение, которое ты принимаешь перед реальным сбоем: не определение для заучивания, а различение, которое надо держать твёрдо — условие против механизма, громкий сбой против тихого, рассуждение против угадывания.

Цель

Убедись, что связываешь четыре урока в одну картину: error — это условие, exception — механизм, раскручивающий стек, stack trace — снимок этой раскрутки, undefined behaviour — опасный тихий случай, а debugging — рассуждение над детерминированной машиной.

Викторина

Программа пытается открыть несуществующий файл. Что здесь error, а что exception?

Викторина

main вызывает a, a вызывает b, b поднимает exception. Обработчик есть только у main. Сколько фреймов снимет (pop) рантайм и где возобновится нормальный поток?

Викторина

Stack trace из четырёх строк (сверху вниз): divide, getAge, loadUser, main. Новичок первым делом правит main. Почему это неверный инстинкт?

Викторина

Одна программа читает индекс 5 массива из 3 элементов и поднимает exception 'index out of range'. Другая читает ту же ячейку за границей и возвращает лежащие там биты, без всякой ошибки. Какой сбой опаснее и почему?

Викторина

В JavaScript чтение индекса 9 массива из 3 элементов даёт undefined (не падение), и затем код вычисляет undefined + 1. Что происходит и почему это напоминает undefined behaviour, хотя каждый шаг определён?

Викторина

Программа возвращает неверную сумму. Инженер начинает переворачивать сравнения и перезапускать, пока число не станет похожим на верное. В чём принципиальное возражение, опирающееся на работу машины?

Итог

Юнит — одна цепочка: error — условие, exception — механизм, который останавливает нормальный поток и раскручивает стек фрейм за фреймом в поиске обработчика, а stack trace — этот стек, замороженный в момент throw, читаемый сверху вниз, throw site первым. Undefined behaviour — опасный случай, где error не поднимается вовсе и мусорное значение едет молча. А поскольку машина детерминирована, ответ на любой сбой — рассуждение, а не угадывание: сформулируй проверяемую гипотезу, сузь диапазон, прочитай trace, проверь состояние, затем чини шаг, виновность которого доказал.

Продолжить восхождение ↑Когда программа падает: тест на припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.