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
// Retrieve a singleton from the vault, creating it if necessary.
std::shared_ptr<void> get_shared(const std::type_info& type) {
std::unique_lock<std::mutex> lock(mutex_);
// Retrieve a singleton from the vault, creating it if necessary.
std::shared_ptr<void> get_shared(const std::type_info& type) {
std::unique_lock<std::mutex> 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()) {
auto it = singletons_.find(type);
if (it == singletons_.end()) {