Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpPnRs 53 of 280 menu
◀ ▶

Останов программы в Go

Программу можно остановить сразу, передав короткое сообщение. Для этого служит встроенная команда panic: она принимает значение, обычно строку, которое попадет в трассировку при необработанном останове.

После такого вызова текущая функция больше не идет вперед. Размотка стека поднимается к вызывающим функциям, пока кто-то не перехватит останов или процесс не закончится.

Поставим останов между двумя печатями в main:

fmt.Println("before") panic("boom") fmt.Println("after")

На экране только "before". Строка "after" не выполняется: управление из функции уже ушло. Сообщение "boom" появится в выводе, если останов никто не поймает.

Тот же смысл виден, когда останов поднимается из вложенного вызова:

package main import "fmt" func inner() { panic("fail") } func main() { fmt.Println("start") inner() fmt.Println("end") }

Дан следующий код:

fmt.Println("one") panic("stop") fmt.Println("two")

Скажите, какие строки появятся на экране.

Дана функция:

func mark() { fmt.Println("mark") }

Вызовите mark из main, затем остановите программу с текстом "done" и еще раз выведите "tail".

Скажите, выполнится ли код в main сразу после вызова функции, внутри которой сработал останов без перехвата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить