File tree Expand file tree Collapse file tree 3 files changed +25
-0
lines changed
Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -14,4 +14,5 @@ func NewRegister() mapping.Register {
1414// Regist -- 登録します.
1515func (r * register ) Regist (m mapping.ExampleMapping ) {
1616 m ["panics_panic_and_recover" ] = PanicAndRecover
17+ m ["panics_panic_and_defer" ] = PanicAndDefer
1718}
Original file line number Diff line number Diff line change 1+ package panics
2+
3+ import "github.com/devlights/gomy/output"
4+
5+ // PanicAndDefer -- panicが呼ばれた場合でもdeferは処理されることを確認するサンプルです.
6+ func PanicAndDefer () error {
7+ defer output .Stdoutl ("[root]" , "call defer" )
8+
9+ var (
10+ raise = func () {
11+ defer output .Stdoutl ("[raise]" , "call defer" )
12+ panic ("test" )
13+ }
14+ proc = func () {
15+ defer output .Stdoutl ("[caller]" , "call defer" )
16+ raise ()
17+ }
18+ )
19+
20+ proc ()
21+
22+ return nil
23+ }
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ func PanicAndRecover() error {
1717}
1818
1919func catch () (err error ) {
20+ defer output .Stdoutl ("[panic]" , "panic時deferは呼ばれる" )
2021 defer func () {
2122 // panicはrecoverで補足できるが、取得できる値は interface{} となる
2223 if obj := recover (); obj != nil {
You can’t perform that action at this time.
0 commit comments