Понимание `panic`
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 42 из 68.
В Go panic — это встроенная функция, используемая для действительно исключительных ситуаций, когда программа сталкивается с неисправимой ошибкой и должна немедленно остановиться. В отличие от обычных ошибок, которые обрабатываются корректно, panic предназначена для катастрофических сбоев, указывающих на то, что в логике или окружении вашей программы есть что-то принципиально wrong.
Когда вызывается panic, выполнение текущей функции немедленно прекращается, и начинается раскрутка стека вызовов. Это делает его совершенно непохожим на обычный подход Go, при котором возвращаются ошибки, обрабатываемые вызывающим кодом.
В идиоматичном Go panic используется редко. Сообщество Go настоятельно предпочитает явную обработку ошибок через возвращаемые значения, а не обработку ошибок на основе panic. Вы можете столкнуться с panic в таких ситуациях, как обращение к элементу массива за пределами его границ, разыменование nil-указателя или обнаружение библиотекой невозможного состояния, указывающего на ошибку в программе.
Большинство программ на Go должны корректно обрабатывать ошибки, используя стандартный интерфейс error, о котором вы узнаёте. Возможность использовать panic следует рассматривать только тогда, когда у вашей программы действительно нет разумного способа продолжить работу.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи7Углубленная обработка ошибок
Пользовательские типы ошибокОбертывание ошибок с помощью `%w`Распаковка с помощью `errors.Is`Распаковка с помощью `errors.As`Понимание `panic`Использование `recover`Итоги: Безопасное деление2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go