github.com/jd-ly/tools@v0.5.7/go/ssa/interp/testdata/recover.go (about)

     1  package main
     2  
     3  // Tests of panic/recover.
     4  
     5  import "fmt"
     6  
     7  func fortyTwo() (r int) {
     8  	r = 42
     9  	// The next two statements simulate a 'return' statement.
    10  	defer func() { recover() }()
    11  	panic(nil)
    12  }
    13  
    14  func zero() int {
    15  	defer func() { recover() }()
    16  	panic(1)
    17  }
    18  
    19  func zeroEmpty() (int, string) {
    20  	defer func() { recover() }()
    21  	panic(1)
    22  }
    23  
    24  func main() {
    25  	if r := fortyTwo(); r != 42 {
    26  		panic(r)
    27  	}
    28  	if r := zero(); r != 0 {
    29  		panic(r)
    30  	}
    31  	if r, s := zeroEmpty(); r != 0 || s != "" {
    32  		panic(fmt.Sprint(r, s))
    33  	}
    34  }