| |
panic 能够改变程序的控制流,调用 panic 后会立刻停止执行当前函数的剩余代码
package main
import "fmt"
func main() {
fmt.Println("Start main")
doSomething()
fmt.Println("End main")
}
func doSomething() {
fmt.Println("Start doSomething")
panickingFunction()
fmt.Println("End doSomething")
}
func panickingFunction() {
fmt.Println("Start panickingFunction")
panic("Oh no, something went wrong!")
fmt.Println("End panickingFunction")
}
在这个程序中:
由于没有 recover() 来捕获 panic,程序最终会终止运行,并打印出 panic 信息。
所以在这个例子中,当 panickingFunction() 调用 panic() 时,程序的执行流程就被中断了,后续的 fmt.Println(“End panickingFunction”) 和 fmt.Println(“End doSomething”) 都无法执行。程序直接终止,并打印出 panic 信息。