@@ -2,6 +2,10 @@ package cqp
2
2
3
3
// #include "events.h"
4
4
import "C"
5
+ import (
6
+ "fmt"
7
+ "runtime/debug"
8
+ )
5
9
6
10
//export _appinfo
7
11
func _appinfo () * C.char { return C .CString ("9," + AppID ) }
@@ -11,6 +15,7 @@ func _on_enable() int32 {
11
15
if Enable == nil {
12
16
return 0
13
17
}
18
+ defer panicToFatal ()
14
19
return Enable ()
15
20
}
16
21
@@ -19,6 +24,7 @@ func _on_disable() int32 {
19
24
if Disable == nil {
20
25
return 0
21
26
}
27
+ defer panicToFatal ()
22
28
return Disable ()
23
29
}
24
30
@@ -27,6 +33,7 @@ func _on_start() int32 {
27
33
if Start == nil {
28
34
return 0
29
35
}
36
+ defer panicToFatal ()
30
37
return Start ()
31
38
}
32
39
@@ -35,6 +42,7 @@ func _on_exit() int32 {
35
42
if Exit == nil {
36
43
return 0
37
44
}
45
+ defer panicToFatal ()
38
46
return Exit ()
39
47
}
40
48
@@ -43,6 +51,7 @@ func _on_private_msg(subType, msgID int32, fromQQ int64, msg *C.char, font int32
43
51
if PrivateMsg == nil {
44
52
return 0
45
53
}
54
+ defer panicToFatal ()
46
55
return PrivateMsg (subType , msgID , fromQQ , goString (msg ), font )
47
56
}
48
57
@@ -51,6 +60,7 @@ func _on_group_msg(subType, msgID int32, fromGroup, fromQQ int64, fromAnonymous,
51
60
if GroupMsg == nil {
52
61
return 0
53
62
}
63
+ defer panicToFatal ()
54
64
return GroupMsg (subType , msgID , fromGroup , fromQQ , goString (fromAnonymous ), goString (msg ), font )
55
65
}
56
66
@@ -59,6 +69,7 @@ func _on_discuss_msg(sub_type, msg_id int32, from_discuss, from_qq int64, msg *C
59
69
if DiscussMsg == nil {
60
70
return 0
61
71
}
72
+ defer panicToFatal ()
62
73
return DiscussMsg (sub_type , msg_id , from_discuss , from_qq , goString (msg ), font )
63
74
}
64
75
@@ -67,6 +78,7 @@ func _on_group_upload(sub_type, send_time int32, from_group, from_qq int64, file
67
78
if GroupUpload == nil {
68
79
return 0
69
80
}
81
+ defer panicToFatal ()
70
82
return GroupUpload (sub_type , send_time , from_group , from_qq , goString (file ))
71
83
}
72
84
@@ -75,6 +87,7 @@ func _on_group_admin(sub_type, send_time int32, from_group, being_operate_qq int
75
87
if GroupAdmin == nil {
76
88
return 0
77
89
}
90
+ defer panicToFatal ()
78
91
return GroupAdmin (sub_type , send_time , from_group , being_operate_qq )
79
92
}
80
93
@@ -83,6 +96,7 @@ func _on_group_member_decrease(sub_type, send_time int32, from_group, from_qq, b
83
96
if GroupMemberDecrease == nil {
84
97
return 0
85
98
}
99
+ defer panicToFatal ()
86
100
return GroupMemberDecrease (sub_type , send_time , from_group , from_qq , being_operate_qq )
87
101
}
88
102
@@ -91,6 +105,7 @@ func _on_group_member_increase(sub_type, send_time int32, from_group, from_qq, b
91
105
if GroupMemberIncrease == nil {
92
106
return 0
93
107
}
108
+ defer panicToFatal ()
94
109
return GroupMemberIncrease (sub_type , send_time , from_group , from_qq , being_operate_qq )
95
110
}
96
111
@@ -99,6 +114,7 @@ func _on_friend_add(sub_type, send_time int32, from_qq int64) int32 {
99
114
if FriendAdd == nil {
100
115
return 0
101
116
}
117
+ defer panicToFatal ()
102
118
return FriendAdd (sub_type , send_time , from_qq )
103
119
}
104
120
@@ -107,6 +123,7 @@ func _on_friend_request(sub_type, send_time int32, from_qq int64, msg, response_
107
123
if FriendRequest == nil {
108
124
return 0
109
125
}
126
+ defer panicToFatal ()
110
127
return FriendRequest (sub_type , send_time , from_qq , goString (msg ), goString (response_flag ))
111
128
}
112
129
@@ -115,6 +132,7 @@ func _on_group_request(sub_type, send_time int32, from_group, from_qq int64, msg
115
132
if GroupRequest == nil {
116
133
return 0
117
134
}
135
+ defer panicToFatal ()
118
136
return GroupRequest (sub_type , send_time , from_group , from_qq , goString (msg ), goString (response_flag ))
119
137
}
120
138
@@ -151,3 +169,11 @@ var GroupMemberIncrease func(subType, sendTime int32, fromGroup, fromQQ, beingOp
151
169
var FriendAdd func (subType , sendTime int32 , fromQQ int64 ) int32
152
170
var FriendRequest func (subType , sendTime int32 , fromQQ int64 , msg , responseFlag string ) int32
153
171
var GroupRequest func (subType , sendTime int32 , fromGroup , fromQQ int64 , msg , responseFlag string ) int32
172
+
173
+ // 捕获panic并调用AddLog(Fatal)
174
+ func panicToFatal () {
175
+ if v := recover (); v != nil {
176
+ // 在这里调用debug.Stack()获取调用栈
177
+ AddLog (Fatal , "go-panic" , fmt .Sprintf ("%v\n %s" , v , debug .Stack ()))
178
+ }
179
+ }
0 commit comments