From c715a583965f84f44aa4613c03b58e2a5c9d53c3 Mon Sep 17 00:00:00 2001 From: Chip Turner Date: Thu, 7 Aug 2014 06:19:22 -0700 Subject: [PATCH] Improve messaging when registrationComplete hasn't been called Summary: The previous message from CHECK_THROW was difficult to debug. This improves the messaging to be more actionable. Test Plan: runtests Reviewed By: lins@fb.com Subscribers: lins, anca, fugalh FB internal diff: D1483915 --- folly/experimental/Singleton.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/folly/experimental/Singleton.h b/folly/experimental/Singleton.h index aa3130fe..0c12519b 100644 --- a/folly/experimental/Singleton.h +++ b/folly/experimental/Singleton.h @@ -138,7 +138,12 @@ class SingletonVault { // Retrieve a singleton from the vault, creating it if necessary. std::shared_ptr get_shared(const std::type_info& type) { std::unique_lock lock(mutex_); - CHECK_THROW(state_ == SingletonVaultState::Running, std::logic_error); + if (state_ != SingletonVaultState::Running) { + throw std::logic_error( + "Attempt to load a singleton before " + "SingletonVault::registrationComplete was called (hint: you probably " + "didn't call initFacebook)"); + } auto it = singletons_.find(type); if (it == singletons_.end()) { -- 2.34.1