diff options
author | Jack Lloyd <[email protected]> | 2015-12-11 09:42:06 -0500 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2015-12-11 09:42:06 -0500 |
commit | 6b9a3a534071ef84c121c406559f8fc7ad546104 (patch) | |
tree | c11480ad1f07e443ba4e992fefcd618b532c2e93 /src/lib/base | |
parent | 79a51627ee11f4d7f55d589751b30463d1f02a76 (diff) |
Reroot the exception hierarchy into a toplevel Exception class
As the alternatives are unfortunate for applications trying to catch
all library errors, and it seems deriving from std::runtime_error
causes problems with MSVC DLLs (GH #340)
Effectively reverts 2837e915d82e43
Diffstat (limited to 'src/lib/base')
-rw-r--r-- | src/lib/base/algo_registry.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/base/algo_registry.h b/src/lib/base/algo_registry.h index eec1ce88d..842c4167b 100644 --- a/src/lib/base/algo_registry.h +++ b/src/lib/base/algo_registry.h @@ -77,7 +77,7 @@ class Algo_Registry { std::lock_guard<mutex> lock(m_mutex); if(!m_algo_info[name].add_provider(provider, fn, pref)) - throw std::runtime_error("Duplicated registration of " + name + "/" + provider); + throw Exception("Duplicated registration of " + name + "/" + provider); } std::vector<std::string> providers_of(const Spec& spec) @@ -111,7 +111,7 @@ class Algo_Registry } catch(std::exception& e) { - throw std::runtime_error("Creating '" + spec.as_string() + "' failed: " + e.what()); + throw Exception("Creating '" + spec.as_string() + "' failed: " + e.what()); } return nullptr; @@ -258,7 +258,7 @@ make_new_T_1X(const typename Algo_Registry<T>::Spec& spec) { std::unique_ptr<X> x(Algo_Registry<X>::global_registry().make(spec.arg(0))); if(!x) - throw std::runtime_error(spec.arg(0)); + throw Exception(spec.arg(0)); return new T(x.release()); } |