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