File tree 4 files changed +35
-1
lines changed
4 files changed +35
-1
lines changed Original file line number Diff line number Diff line change 6
6
7
7
当然这不是一个好的最佳实践,只是我们需要让业务能够正常跑起来更健壮以免隔三差五背锅,仅此而已!
8
8
9
- 最后,切记:错误应该被尽早的暴露出来,而不是一味的掩盖!
9
+ 最后,切记:错误应该被尽早的暴露出来,而不是一味的掩盖![ ] ( )
10
10
11
11
# 二、安装
12
12
@@ -154,6 +154,15 @@ func Test(t *testing.T) {
154
154
fmt.Println (" finally" )
155
155
}).Do ()
156
156
157
+ // 发生panic,尝试捕获错误,但是没有捕获得到,则异常会被向上抛出,即仍然会panic
158
+ try_catch.Try (func () {
159
+ panic (errors.New (" test" ))
160
+ }).Catch (errFoo, func (err error ) {
161
+ fmt.Println (" catch success" )
162
+ }).Finally (func () {
163
+ fmt.Println (" not catch finally" )
164
+ }).Do ()
165
+
157
166
}
158
167
```
159
168
Original file line number Diff line number Diff line change @@ -64,4 +64,13 @@ func Test(t *testing.T) {
64
64
fmt .Println ("finally" )
65
65
}).Do ()
66
66
67
+ // 发生panic,尝试捕获错误,但是没有捕获得到,则异常会被向上抛出,即仍然会panic
68
+ try_catch .Try (func () {
69
+ panic (errors .New ("test" ))
70
+ }).Catch (errFoo , func (err error ) {
71
+ fmt .Println ("catch success" )
72
+ }).Finally (func () {
73
+ fmt .Println ("not catch finally" )
74
+ }).Do ()
75
+
67
76
}
Original file line number Diff line number Diff line change @@ -78,8 +78,15 @@ func (x *TryHandler) Do() {
78
78
79
79
// 如果前面的捕获不到则走这里的Default,没设置的话就是不需要捕获了
80
80
if ! catchSuccess && x .bindingDefaultCatchHandler != nil {
81
+ catchSuccess = true
81
82
x .bindingDefaultCatchHandler .handle (err )
82
83
}
84
+
85
+ // 如果错误没有被捕获到的话,则继续向上抛出
86
+ if ! catchSuccess {
87
+ panic (err )
88
+ }
89
+
83
90
}
84
91
85
92
// ------------------------------------------------ CatchHandler -------------------------------------------------------
Original file line number Diff line number Diff line change @@ -63,4 +63,13 @@ func Test(t *testing.T) {
63
63
fmt .Println ("finally" )
64
64
}).Do ()
65
65
66
+ // 发生panic,尝试捕获错误,但是没有捕获得到,则异常会被向上抛出,即仍然会panic
67
+ Try (func () {
68
+ panic (errors .New ("test" ))
69
+ }).Catch (errFoo , func (err error ) {
70
+ fmt .Println ("catch success" )
71
+ }).Finally (func () {
72
+ fmt .Println ("not catch finally" )
73
+ }).Do ()
74
+
66
75
}
You can’t perform that action at this time.
0 commit comments