1// run 2 3// Copyright 2022 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7package main 8 9import "log" 10 11func main() { 12 defer func() { 13 expect(5, recover()) 14 }() 15 func() { 16 expect(nil, recover()) 17 defer func() { 18 defer func() { 19 defer func() { 20 defer func() { 21 expect(3, recover()) 22 }() 23 defer panic(3) 24 panic(2) 25 }() 26 defer func() { 27 expect(1, recover()) 28 }() 29 panic(1) 30 }() 31 }() 32 }() 33 func() { 34 for { 35 defer func() { 36 defer panic(5) 37 }() 38 break 39 } 40 panic(4) 41 }() 42} 43 44func expect(want, have interface{}) { 45 if want != have { 46 log.Fatalf("want %v, have %v", want, have) 47 } 48} 49