14.panic

panic

  • 用于不可用恢复的严重错误

  • panic 退出前会执行 defer 指定内容

当panic异常发生时,程序会中断运行,并立即执行在该goroutine中被延迟的函数(defer 机制), 随后,程序崩溃并输出日志信息。

考虑regexp.Compile函数,该函数将正则表达式编译成有效的可匹配格式。当输入的正则表达式不合法时,该函数会返回一个错误。当调用者明确的知道正确的输入不会引起函数错误时,要求调用者检查这个错误是不必要和累赘的。我们应该假设函数的输入一直合法,就如前面的断言一样:当调用者输入了不应该出现的输入时,触发panic异常。

输出堆栈信息

1
2
3
4
5
6
7
8
9
func main() {
    defer printStack()
    f(3)
}
func printStack() {
    var buf [4096]byte
    n := runtime.Stack(buf[:], false)
    os.Stdout.Write(buf[:n])
}

正则

regexp.MustCompile 检查输入的合法性

1
var httpSchemeRE = regexp.MustCompile(`^https?:`) //"http:" or "https:"
Licensed under CC BY-NC-SA 4.0
本文阅读量 次, 总访问量 ,总访客数
Built with Hugo .   Theme Stack designed by Jimmy