考虑到我使用了原始的"错误"去打包。
并且,恐慌(11)和恐慌(" 11")之间的区别?
答案 0 :(得分:5)
panic
定义为func panic(v interface{})
,调用panic(anything)
将打印anything
的字符串表示形式,然后打印调用函数的堆栈跟踪。
唯一不同的是,如果您使用recover
,您将能够访问您传递给恐慌的任何内容,example:
func main() {
defer func() {
if err := recover(); err != nil {
if n, ok := err.(int); ok && n == 11 {
fmt.Println("got 11!")
}
}
}()
panic(11)
}
答案 1 :(得分:3)
panic("error_msg")
和panic("11")
恐慌一个字符串,panic(error.New("error_msg")
恐慌错误,panic(11)
恐慌整数。
如果您在recover
期间未使用defer
处理这些恐慌,那么无论您使用哪种恐慌都无关紧要,所有人都会打印“error_msg”或“11”。