aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/base
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2015-12-11 09:42:06 -0500
committerJack Lloyd <[email protected]>2015-12-11 09:42:06 -0500
commit6b9a3a534071ef84c121c406559f8fc7ad546104 (patch)
treec11480ad1f07e443ba4e992fefcd618b532c2e93 /src/lib/base
parent79a51627ee11f4d7f55d589751b30463d1f02a76 (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.h6
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());
}