Browse Source

[4088] Exceptions added.

Tomek Mrugalski 9 years ago
parent
commit
994efcca51
2 changed files with 11 additions and 2 deletions
  1. 2 2
      src/lib/eval/eval_context.cc
  2. 9 0
      src/lib/eval/eval_context.h

+ 2 - 2
src/lib/eval/eval_context.cc

@@ -61,11 +61,11 @@ EvalContext::parseString(const std::string& str)
 void
 EvalContext::error(const isc::eval::location& l, const std::string& m)
 {
-    std::cerr << l << ": " << m << std::endl;
+    isc_throw(EvalError, l << ": " << m);
 }
 
 void
 EvalContext::error (const std::string& m)
 {
-  std::cerr << m << std::endl;
+    isc_throw(EvalError, m);
 }

+ 9 - 0
src/lib/eval/eval_context.h

@@ -17,6 +17,7 @@
 #include <string>
 #include <map>
 #include <eval/parser.h>
+#include <exceptions/exceptions.h>
 
 // Tell Flex the lexer's prototype ...
 #define YY_DECL isc::eval::EvalParser::symbol_type yylex (EvalContext& driver)
@@ -24,6 +25,14 @@
 // ... and declare it for the parser's sake.
 YY_DECL;
 
+/// @brief Evaluation error exception raised when trying to parse an axceptions.
+class EvalError : public isc::exceptions::Exception {
+public:
+    EvalError(const char* file, size_t line, const char* what) :
+        isc::Exception(file, line, what) { };
+};
+
+
 /// @brief Evaluation context, an interface to the expression evaluation.
 class EvalContext
 {