From 9706cc60383074d3ced0bbb29445fe4d1da09d12 Mon Sep 17 00:00:00 2001 From: Michael Krasnov Date: Sun, 24 Nov 2019 11:57:35 -0500 Subject: [PATCH 1/2] Added optional stacktrace to errors thrown from selector functions When throwing error from selector function, append original error stacktrace (if present) to new error. --- src/hooks/useSelector.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hooks/useSelector.js b/src/hooks/useSelector.js index e923aef28..a0ffe4ed8 100644 --- a/src/hooks/useSelector.js +++ b/src/hooks/useSelector.js @@ -35,7 +35,8 @@ function useSelectorWithStoreAndSubscription( selectedState = latestSelectedState.current } } catch (err) { - let errorMessage = `An error occurred while selecting the store state: ${err.message}.` + let errorMessage = `An error occurred while selecting the store state: ` + errorMessage += err.stack ? `\n${err.stack}\n` : err.message if (latestSubscriptionCallbackError.current) { errorMessage += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\nOriginal stack trace:` From f310d641cf5abe1402879b3843239fe3c4321245 Mon Sep 17 00:00:00 2001 From: Michael Krasnov Date: Tue, 26 Nov 2019 20:02:58 -0500 Subject: [PATCH 2/2] Rethrowing original errors from selector functions --- src/hooks/useSelector.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/hooks/useSelector.js b/src/hooks/useSelector.js index a0ffe4ed8..bfb2d70fe 100644 --- a/src/hooks/useSelector.js +++ b/src/hooks/useSelector.js @@ -35,14 +35,11 @@ function useSelectorWithStoreAndSubscription( selectedState = latestSelectedState.current } } catch (err) { - let errorMessage = `An error occurred while selecting the store state: ` - errorMessage += err.stack ? `\n${err.stack}\n` : err.message - if (latestSubscriptionCallbackError.current) { - errorMessage += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\nOriginal stack trace:` + err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n` } - throw new Error(errorMessage) + throw err } useIsomorphicLayoutEffect(() => {