Menu
Coddy logo textTech

Понимание `panic`

Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 42 из 68.

В Go panic — это встроенная функция, используемая для действительно исключительных ситуаций, когда ваша программа сталкивается с неисправимой ошибкой и должна немедленно прекратить работу. В отличие от обычных ошибок, которые вы обрабатываете корректно, panic зарезервирована для катастрофических сбоев, указывающих на серьезные проблемы в логике или окружении вашей программы.

Когда вызывается panic, она немедленно прекращает обычное выполнение текущей функции и начинает развертывание стека вызовов. Это делает её сильно отличающейся от типичного для Go подхода с возвратом ошибок, которые могут быть обработаны вызывающим кодом.

В идиоматичном Go panic используется редко. Сообщество Go решительно предпочитает явную обработку ошибок через возвращаемые значения, а не обработку ошибок на основе паники. Вы можете столкнуться с panic в таких ситуациях, как выход за границы массива, разыменование нулевого указателя или когда библиотека обнаруживает невозможное состояние, указывающее на ошибку в программе.

Большинство программ на Go должны корректно обрабатывать ошибки, используя стандартный интерфейс error, о котором вы узнали. panic следует рассматривать только тогда, когда у вашей программы действительно нет разумного способа продолжить работу.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Шпаргалка

В Go panic — это встроенная функция для неустранимых ошибок, которая немедленно прекращает выполнение программы:

panic("something went terribly wrong")

При вызове panic выполнение текущей функции прекращается, и начинается развертывание стека вызовов. Используйте panic экономно — только для катастрофических сбоев, при которых программа не может продолжать работу. Go отдает предпочтение явному управлению ошибками через возвращаемые значения, а не обработке ошибок на основе паники.

Типичные ситуации возникновения паники включают выход за границы массива, разыменование нулевого указателя (nil pointer dereference) или невозможные состояния программы, указывающие на наличие багов.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком