Add and use type_error for type conversion failure
This commit is contained in:
parent
86b5abde08
commit
fe77bf9d7d
14
json.cpp.rl
14
json.cpp.rl
@ -282,32 +282,32 @@ json::write (const json::node &node, std::ostream &os)
|
||||
|
||||
const json::object&
|
||||
json::node::as_object (void) const
|
||||
{ throw parse_error ("node is not an object"); }
|
||||
{ throw type_error ("node is not an object"); }
|
||||
|
||||
|
||||
const json::array&
|
||||
json::node::as_array (void) const
|
||||
{ throw parse_error ("node is not an array"); }
|
||||
{ throw type_error ("node is not an array"); }
|
||||
|
||||
|
||||
const json::string&
|
||||
json::node::as_string (void) const
|
||||
{ throw parse_error ("node is not a string"); }
|
||||
{ throw type_error ("node is not a string"); }
|
||||
|
||||
|
||||
const json::number&
|
||||
json::node::as_number (void) const
|
||||
{ throw parse_error ("node is not a number"); }
|
||||
{ throw type_error ("node is not a number"); }
|
||||
|
||||
|
||||
const json::boolean&
|
||||
json::node::as_boolean (void) const
|
||||
{ throw parse_error ("node is not a boolean"); }
|
||||
{ throw type_error ("node is not a boolean"); }
|
||||
|
||||
|
||||
const json::null&
|
||||
json::node::as_null (void) const
|
||||
{ throw parse_error ("node is not a null"); }
|
||||
{ throw type_error ("node is not a null"); }
|
||||
|
||||
|
||||
bool
|
||||
@ -363,7 +363,7 @@ json::object::operator[](const std::string &key) const {
|
||||
if (value == m_values.end ()) {
|
||||
ostringstream ss;
|
||||
ss << "no key: " << key;
|
||||
throw json::parse_error (ss.str());
|
||||
throw json::error (ss.str());
|
||||
}
|
||||
|
||||
return *value->second;
|
||||
|
8
json.hpp
8
json.hpp
@ -226,6 +226,14 @@ namespace json {
|
||||
{ ; }
|
||||
};
|
||||
|
||||
/// Base class for all type conversion errors
|
||||
class type_error : public error {
|
||||
public:
|
||||
type_error (const std::string &_what):
|
||||
error (_what)
|
||||
{ ; }
|
||||
};
|
||||
|
||||
/// Base class for errors thrown during parsing
|
||||
class parse_error : public error {
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user