| package main |
| |
| import ( |
| "fmt" |
| "os" |
| "os/signal" |
| "time" |
| ) |
| |
| var err interface{} |
| |
| func main() { |
| defer func() { |
| if err=recover();err != nil { |
| fmt.Println("main ==》 ",err) |
| } |
| }() |
| |
| interrupt := make(chan os.Signal) |
| signal.Notify(interrupt, os.Interrupt) |
| var i int = 0 |
| for { |
| i++ |
| select { |
| case <-time.After(time.Second): |
| |
| go test(i) |
| case <-interrupt: |
| panic("终止") |
| return |
| } |
| } |
| |
| } |
| |
| func test(i int) { |
| defer func() { |
| if err = recover(); err != nil { |
| fmt.Println("test==>", err) |
| } |
| }() |
| |
| |
| if i == 10 || i == 20 { |
| panic("终止test") |
| } |
| fmt.Println("结果==》 ",i) |
| } |