求大神指教, 如何写一个全局recover,保证服务不会因为go程里面的panic整个挂掉

ywdhzxf · · 3697 次点击
#### 中间件统一加上就行了 #### 非web请求的部分自己单独开启的协程,不要用裸go,可以类似这样做统一的Go封装: ```golang package main import ( "fmt" "github.com/nothollyhigh/kiss/util" ) func main() { util.Go(func() { fmt.Println(111) panic("error") fmt.Println(222) }) select {} } ``` #### 输出: ```text PS C:\Users\Administrator\Desktop> go run .\test.go 111 2019-09-01 17:37:17.037 [Error] [panic.go:43] --------------------------------------- runtime error: error traceback: stack: 1 true [file: C:/Users/Administrator/Desktop/test.go] [func: main.main.func1] [line: 11] stack: 2 true [file: d:/dev/gopath/src/github.com/nothollyhigh/kiss/util/coroutine.go] [func: github.com/nothollyhigh/kiss/util.Go.func1] [line: 17] stack: 3 true [file: d:/dev/go/src/runtime/asm_amd64.s] [func: runtime.goexit] [line: 1337] --------------------------------------- ```
#6
更多评论
polaris
社区,需要你我一同完善!
没法全局,只能每个 gorouitne 自己 recover 自己。
#1
<a href="/user/polaris" title="@polaris">@polaris</a> 如果不考虑go程的话可以监听, 但是go程里面不知道咋监听...
#2