在golang程序中,如果发生panic,要想程序不崩溃终止,可以使用defer recover:
example:
package mainimport ("fmt")func badCall() {panic("bad end")}func test() {defer func() {if err := recover(); err != nil {fmt.Printf("Panicing %s\r\n", e)}}()badCall()fmt.Printf("After bad call\r\n") // <-- wordt niet bereikt}func main() {fmt.Printf("Calling test\r\n")test()fmt.Printf("Test completed\r\n")}
输出结果:
注意:recover()只能和defer一起使用
见博文:http://wiki.jikexueyuan.com/project/the-way-to-go/13.3.html
