35 lines
		
	
	
		
			506 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			506 B
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| // Tests of panic/recover.
 | |
| 
 | |
| import "fmt"
 | |
| 
 | |
| func fortyTwo() (r int) {
 | |
| 	r = 42
 | |
| 	// The next two statements simulate a 'return' statement.
 | |
| 	defer func() { recover() }()
 | |
| 	panic(nil)
 | |
| }
 | |
| 
 | |
| func zero() int {
 | |
| 	defer func() { recover() }()
 | |
| 	panic(1)
 | |
| }
 | |
| 
 | |
| func zeroEmpty() (int, string) {
 | |
| 	defer func() { recover() }()
 | |
| 	panic(1)
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	if r := fortyTwo(); r != 42 {
 | |
| 		panic(r)
 | |
| 	}
 | |
| 	if r := zero(); r != 0 {
 | |
| 		panic(r)
 | |
| 	}
 | |
| 	if r, s := zeroEmpty(); r != 0 || s != "" {
 | |
| 		panic(fmt.Sprint(r, s))
 | |
| 	}
 | |
| }
 |