defer和recover的配合

参考解析

题目来源:京东

答案:

defer内建函数,延迟调用,所在函数退出时调用,一个方法里若有多个defer语句,则先声明的后被调用,一般与recover()函数一起配合使用,recover()一般用于捕捉panic抛出的异常,比如:panic(11), 捕捉到的就是11

  1. func main() {
  2. defer func() {
  3. if v := recover();v == 11 {
  4. fmt.Printf("v: %#v
  5. ",v)
  6. }
  7. fmt.Printf("defer1...
  8. ")
  9. }()
  10. defer func() {
  11. fmt.Printf("defer2...
  12. ")
  13. }()
  14. array := [2]int{1,2}
  15. fmt.Println("array: ",array[1])
  16. panic(11)
  17. /*输出:
  18. array: 2
  19. defer2...
  20. v: 11
  21. defer1...
  22. */
  23. }