@@ -45,6 +45,22 @@ type OptimizelyClient struct {
45
45
// IsFeatureEnabled returns true if the feature is enabled for the given user
46
46
func (o * OptimizelyClient ) IsFeatureEnabled (featureKey string , userContext entities.UserContext ) (result bool , err error ) {
47
47
48
+ defer func () {
49
+ if r := recover (); r != nil {
50
+ switch t := r .(type ) {
51
+ case error :
52
+ err = t
53
+ case string :
54
+ err = errors .New (t )
55
+ default :
56
+ err = errors .New ("unexpected error" )
57
+ }
58
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
59
+ logger .Error (errorMessage , err )
60
+ logger .Debug (string (debug .Stack ()))
61
+ }
62
+ }()
63
+
48
64
context , featureDecision , err := o .getFeatureDecision (featureKey , userContext )
49
65
if err != nil {
50
66
logger .Error ("received an error while computing feature decision" , err )
@@ -149,6 +165,23 @@ func (o *OptimizelyClient) Track(eventKey string, userContext entities.UserConte
149
165
150
166
// GetFeatureVariableBoolean returns boolean feature variable value
151
167
func (o * OptimizelyClient ) GetFeatureVariableBoolean (featureKey , variableKey string , userContext entities.UserContext ) (value bool , err error ) {
168
+
169
+ defer func () {
170
+ if r := recover (); r != nil {
171
+ switch t := r .(type ) {
172
+ case error :
173
+ err = t
174
+ case string :
175
+ err = errors .New (t )
176
+ default :
177
+ err = errors .New ("unexpected error" )
178
+ }
179
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
180
+ logger .Error (errorMessage , err )
181
+ logger .Debug (string (debug .Stack ()))
182
+ }
183
+ }()
184
+
152
185
val , valueType , err := o .GetFeatureVariable (featureKey , variableKey , userContext )
153
186
if err != nil {
154
187
return false , err
@@ -162,6 +195,23 @@ func (o *OptimizelyClient) GetFeatureVariableBoolean(featureKey, variableKey str
162
195
163
196
// GetFeatureVariableDouble returns double feature variable value
164
197
func (o * OptimizelyClient ) GetFeatureVariableDouble (featureKey , variableKey string , userContext entities.UserContext ) (value float64 , err error ) {
198
+
199
+ defer func () {
200
+ if r := recover (); r != nil {
201
+ switch t := r .(type ) {
202
+ case error :
203
+ err = t
204
+ case string :
205
+ err = errors .New (t )
206
+ default :
207
+ err = errors .New ("unexpected error" )
208
+ }
209
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
210
+ logger .Error (errorMessage , err )
211
+ logger .Debug (string (debug .Stack ()))
212
+ }
213
+ }()
214
+
165
215
val , valueType , err := o .GetFeatureVariable (featureKey , variableKey , userContext )
166
216
if err != nil {
167
217
return 0 , err
@@ -175,6 +225,23 @@ func (o *OptimizelyClient) GetFeatureVariableDouble(featureKey, variableKey stri
175
225
176
226
// GetFeatureVariableInteger returns integer feature variable value
177
227
func (o * OptimizelyClient ) GetFeatureVariableInteger (featureKey , variableKey string , userContext entities.UserContext ) (value int , err error ) {
228
+
229
+ defer func () {
230
+ if r := recover (); r != nil {
231
+ switch t := r .(type ) {
232
+ case error :
233
+ err = t
234
+ case string :
235
+ err = errors .New (t )
236
+ default :
237
+ err = errors .New ("unexpected error" )
238
+ }
239
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
240
+ logger .Error (errorMessage , err )
241
+ logger .Debug (string (debug .Stack ()))
242
+ }
243
+ }()
244
+
178
245
val , valueType , err := o .GetFeatureVariable (featureKey , variableKey , userContext )
179
246
if err != nil {
180
247
return 0 , err
@@ -188,6 +255,23 @@ func (o *OptimizelyClient) GetFeatureVariableInteger(featureKey, variableKey str
188
255
189
256
// GetFeatureVariableString returns string feature variable value
190
257
func (o * OptimizelyClient ) GetFeatureVariableString (featureKey , variableKey string , userContext entities.UserContext ) (value string , err error ) {
258
+
259
+ defer func () {
260
+ if r := recover (); r != nil {
261
+ switch t := r .(type ) {
262
+ case error :
263
+ err = t
264
+ case string :
265
+ err = errors .New (t )
266
+ default :
267
+ err = errors .New ("unexpected error" )
268
+ }
269
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
270
+ logger .Error (errorMessage , err )
271
+ logger .Debug (string (debug .Stack ()))
272
+ }
273
+ }()
274
+
191
275
value , valueType , err := o .GetFeatureVariable (featureKey , variableKey , userContext )
192
276
if err != nil {
193
277
return "" , err
@@ -201,6 +285,22 @@ func (o *OptimizelyClient) GetFeatureVariableString(featureKey, variableKey stri
201
285
// GetFeatureVariable returns feature as a string along with it's associated type
202
286
func (o * OptimizelyClient ) GetFeatureVariable (featureKey , variableKey string , userContext entities.UserContext ) (value string , valueType entities.VariableType , err error ) {
203
287
288
+ defer func () {
289
+ if r := recover (); r != nil {
290
+ switch t := r .(type ) {
291
+ case error :
292
+ err = t
293
+ case string :
294
+ err = errors .New (t )
295
+ default :
296
+ err = errors .New ("unexpected error" )
297
+ }
298
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
299
+ logger .Error (errorMessage , err )
300
+ logger .Debug (string (debug .Stack ()))
301
+ }
302
+ }()
303
+
204
304
context , featureDecision , err := o .getFeatureDecision (featureKey , userContext )
205
305
if err != nil {
206
306
return "" , "" , err
@@ -222,6 +322,23 @@ func (o *OptimizelyClient) GetFeatureVariable(featureKey, variableKey string, us
222
322
223
323
// GetAllFeatureVariables returns all the variables for a given feature along with the enabled state
224
324
func (o * OptimizelyClient ) GetAllFeatureVariables (featureKey string , userContext entities.UserContext ) (enabled bool , variableMap map [string ]string , err error ) {
325
+
326
+ defer func () {
327
+ if r := recover (); r != nil {
328
+ switch t := r .(type ) {
329
+ case error :
330
+ err = t
331
+ case string :
332
+ err = errors .New (t )
333
+ default :
334
+ err = errors .New ("unexpected error" )
335
+ }
336
+ errorMessage := fmt .Sprintf ("optimizely SDK is panicking with the error:" )
337
+ logger .Error (errorMessage , err )
338
+ logger .Debug (string (debug .Stack ()))
339
+ }
340
+ }()
341
+
225
342
variableMap = make (map [string ]string )
226
343
decisionContext , featureDecision , err := o .getFeatureDecision (featureKey , userContext )
227
344
if err != nil {
0 commit comments