Fix JSON_USE_EXCEPTION=0 use case

This patch fixes the JSON_USE_EXCEPTION flag. Currently, due to the
throwRuntimeError and throwLogicError methods implemented in json_value,
even if JSON_USE_EXCEPTION is set to 0 jsoncpp will still throw. This
breaks integration into projects with -fno-exceptions set, such as
Chromium.
diff --git a/include/json/value.h b/include/json/value.h
index 5f8d214..06d89ae 100644
--- a/include/json/value.h
+++ b/include/json/value.h
@@ -50,6 +50,7 @@
  */
 namespace Json {
 
+#if JSON_USE_EXCEPTION
 /** Base class for all exceptions we throw.
  *
  * We use nothing but these internally. Of course, STL can throw others.
@@ -85,6 +86,7 @@
 public:
   LogicError(String const& msg);
 };
+#endif
 
 /// used internally
 JSONCPP_NORETURN void throwRuntimeError(String const& msg);
diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp
index b046c19..cc92d44 100644
--- a/src/lib_json/json_value.cpp
+++ b/src/lib_json/json_value.cpp
@@ -226,6 +226,7 @@
 
 namespace Json {
 
+#if JSON_USE_EXCEPTION
 Exception::Exception(String msg) : msg_(std::move(msg)) {}
 Exception::~Exception() JSONCPP_NOEXCEPT {}
 char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); }
@@ -237,6 +238,14 @@
 JSONCPP_NORETURN void throwLogicError(String const& msg) {
   throw LogicError(msg);
 }
+# else // !JSON_USE_EXCEPTION
+JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
+  abort();
+}
+JSONCPP_NORETURN void throwLogicError(String const& msg) {
+  abort();
+}
+#endif
 
 // //////////////////////////////////////////////////////////////////
 // //////////////////////////////////////////////////////////////////