@@ -76,9 +76,18 @@ func (o *OptimizelyClient) GetEnabledFeatures(userContext entities.UserContext)
76
76
77
77
defer func () {
78
78
if r := recover (); r != nil {
79
- errorMessage := fmt .Sprintf (`optimizely SDK is panicking with the error "%s"` , string (debug .Stack ()))
80
- err = errors .New (errorMessage )
79
+ switch r .(type ) {
80
+ case error :
81
+ err = r .(error )
82
+ case string :
83
+ strErr := r .(string )
84
+ err = errors .New (strErr )
85
+ default :
86
+ err = errors .New ("unexpected error" )
87
+ }
88
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
81
89
logger .Error (errorMessage , err )
90
+ logger .Debug (string (debug .Stack ()))
82
91
}
83
92
}()
84
93
@@ -105,9 +114,18 @@ func (o *OptimizelyClient) Track(eventKey string, userContext entities.UserConte
105
114
106
115
defer func () {
107
116
if r := recover (); r != nil {
108
- errorMessage := fmt .Sprintf (`optimizely SDK is panicking with the error "%s"` , string (debug .Stack ()))
109
- err = errors .New (errorMessage )
117
+ switch r .(type ) {
118
+ case error :
119
+ err = r .(error )
120
+ case string :
121
+ strErr := r .(string )
122
+ err = errors .New (strErr )
123
+ default :
124
+ err = errors .New ("unexpected error" )
125
+ }
126
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
110
127
logger .Error (errorMessage , err )
128
+ logger .Debug (string (debug .Stack ()))
111
129
}
112
130
}()
113
131
@@ -234,13 +252,24 @@ func (o *OptimizelyClient) GetAllFeatureVariables(featureKey string, userContext
234
252
func (o * OptimizelyClient ) getFeatureDecision (featureKey string , userContext entities.UserContext ) (decisionContext decision.FeatureDecisionContext , featureDecision decision.FeatureDecision , err error ) {
235
253
236
254
defer func () {
255
+ var e error
237
256
if r := recover (); r != nil {
238
- errorMessage := fmt .Sprintf (`optimizely SDK is panicking with the error "%s"` , string (debug .Stack ()))
239
- logger .Error (errorMessage , err )
257
+ switch r .(type ) {
258
+ case error :
259
+ e = r .(error )
260
+ case string :
261
+ strErr := r .(string )
262
+ e = errors .New (strErr )
263
+ default :
264
+ e = errors .New ("unexpected error" )
265
+ }
266
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
267
+ logger .Error (errorMessage , e )
268
+ logger .Debug (string (debug .Stack ()))
240
269
241
270
// If we have a feature, then we can recover w/o throwing
242
271
if decisionContext .Feature == nil {
243
- err = errors . New ( errorMessage )
272
+ err = e
244
273
}
245
274
}
246
275
}()
0 commit comments