| 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)) | |
| } | |
| } |