github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/gnovm/tests/files/recover11.gno (about) 1 package main 2 3 func level3() { 4 panic("level3") 5 defer func() { 6 if r := recover(); r != nil { 7 println("recover level3 in level3") 8 } 9 }() 10 } 11 12 func level2() { 13 defer func() { 14 if r := recover(); r != nil { 15 println("recover level3 in level2") 16 } 17 }() 18 defer level3() 19 panic("level2") 20 } 21 22 func level1() { 23 defer func() { 24 if r := recover(); r != nil { 25 println("recover level3 in level1") 26 } 27 }() 28 level2() 29 panic("level1") 30 } 31 32 func main() { 33 level1() 34 } 35 36 // Output: 37 // recover level3 in level2 38 // recover level3 in level1