Практика на аварийный останов в Go
Дан следующий код:
fmt.Println("start")
panic("mid")
fmt.Println("end")
Запишите в main этот фрагмент и
скажите, какие строки выведутся без
перехвата.
Дана функция:
func run() {
panic("fail")
}
Вызовите run из main, перехватите
останов в отложенной функции и выведите
"fine" после вызова.
Дан следующий код:
func probe() {
fmt.Println(recover())
}
В main вызовите probe, затем
остановите программу с "z" без
перехвата. Скажите, что напечатает
probe.
Даны функции:
func leaf() {
panic("leaf")
}
func root() {
leaf()
}
В main перехватите останов после
вызова root и выведите "back".
Дан следующий код:
func work() {
fmt.Println("in")
panic("no")
fmt.Println("skip")
}
Оберните вызов work перехватом в
main и перечислите строки вывода
по порядку.
Дана функция:
func twice() {
panic("once")
}
В main выведите "A", вызовите
twice без перехвата и выведите
"B". Скажите, дойдет ли печать
"B".