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