Advertisement
pr4gasm

Untitled

Jul 19th, 2021
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.92 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func f4() {
  6.  
  7.         defer func() {
  8.                 fmt.Println("defer f::anon1()")
  9.                         for {
  10.                                 if p := recover(); p == nil {
  11.                                         break
  12.                                 } else {
  13.                                 fmt.Println("recover panic:",p)
  14.                                 }
  15.                         }
  16.                 panic("panic 6")
  17.         }()
  18.         defer func() {
  19.                 fmt.Println("defer f::anon2()")
  20.                 panic("panic 5")
  21.         }()
  22.  
  23.         defer func() {
  24.                 fmt.Println("defer f::anon3()")
  25.                 panic("panic 4")
  26.         }()
  27.  
  28.         defer func() {
  29.                 defer func() {
  30.                         panic("start panic : f::anon::anon()")
  31.                         panic("panic 2")
  32.                         panic("panic 3")
  33.                 }()
  34.                 defer func() {
  35.                         fmt.Println("defer f::anon::anon()")
  36.                 }()
  37.         }()
  38.         func() {
  39.                 fmt.Println("in f::anon()")
  40.         }()
  41. }
  42.  
  43. func defer_f3() {
  44.         fmt.Println("in defer_f3()")
  45.         recover()
  46.         defer func() {
  47.                 fmt.Println("defer defer_f3::anon()")
  48.         }()
  49. }
  50.  
  51. func f3() {
  52.         fmt.Println("f4()")
  53.         f4()
  54.         defer defer_f3()
  55. }
  56.  
  57. func f2() {
  58.         fmt.Println("f3()")
  59.         f3()
  60.         defer func() {
  61.                 recover()
  62.                 fmt.Println("defer f2()")
  63.         }()
  64. }
  65.  
  66. func f1() {
  67.         fmt.Println("f2()")
  68.         f2()
  69.         defer func() {
  70.                 fmt.Println("defer f1()")
  71.         }()
  72. }
  73.  
  74. func main() {
  75.         fmt.Println("f1()")
  76.         f1()
  77.         recover()
  78.         defer func() {
  79.                 fmt.Println("defer main::anon()")
  80.                 fmt.Println("recover in defer main::anon() :",recover())
  81.         }()
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement