recover函数捕获异常

package main

import (
	//"fmt"
	"time"
)

func test () {
	var m map[string]int
	m["abcd"] = 1234
}

func main () {
	for i := 0; i < 100; i++ {
		go test()
	}

	time.Sleep(10 * time.Second)
}

  不使用recover(),会直接panic影响后面的进程

  

2.使用recover()

  

//recover来捕获异常
package main

import (
	"fmt"
	"time"
)

func test () {
	//使用recover来捕获异常
	defer func () {
		if err := recover(); err != nil {
			fmt.Println("panic", err)
		}
	}()

	var m map[string]int
	m["abcd"] = 1234
}

func main () {
	for i := 0; i < 100; i++ {
		go test()
	}

	time.Sleep(10 * time.Second)
}

  

  进程不会panic

 

posted @ 2019-07-29 23:48  子夜的流星  阅读(466)  评论(0)    收藏  举报