| 12345678910111213141516171819202122232425262728293031 |
- package util
- import (
- "fmt"
- "os"
- )
- func GoWithRecover(handler func(), recoverHandler func(r interface{})) {
- if handler == nil {
- return
- }
- go func() {
- defer func() {
- if r := recover(); r != nil {
- if recoverHandler == nil {
- fmt.Fprintf(os.Stderr, "panic:\n %v\n", r)
- return
- }
- go func() {
- defer func() {
- if r := recover(); r != nil {
- fmt.Fprintf(os.Stderr, "panic:\n %v\n", r)
- }
- }()
- recoverHandler(r)
- }()
- }
- }()
- handler()
- }()
- }
|