package main import ( "fmt" "net/http" ) /** 从golang的异常机制可以看出,异常处理recover最好是在接口的入口处 就将其插入到对应defer队列中。这样在接口调用过程中,即使发生异常, 程序依然可以提供服务。 https://studygolang.com/articles/14168 (1)在每个Grpc的接口入口处加上defer的recover异常处理,以gin的方式返回错误,但主进程不会崩溃。 (2)修改一下代码生成器,这样就不用每个接口都手动去写这个异常处理了,因为代码都是一样的。 */ func HelloServer(w http.ResponseWriter, req *http.Request) { //在可能出现异常的函数调用前,使用defer进行加入defer队列,即使出现异常,也不会整个进程退出~ defer func() { if err := recover(); err != nil { fmt.Println(err) } }() //调用函数 var MakecoreData *int = nil *MakecoreData = 10000 fmt.Fprintf(w, "hello world") } func main() { //http.HandleFunc("/hello", HelloServer) //err := http.ListenAndServe(":12345", nil) //if err != nil { // log.Fatal("ListenAndServe: ", err) //} areaCode:="11223344" fmt.Println(areaCode[4:]) }