Added a templated derived exception to KeyNotFound so that you can figure out *which* key wasn't found.

This commit is contained in:
Jesse Beder
2009-01-01 02:40:18 +00:00
parent 5a2a317d62
commit 27bd791ea0
4 changed files with 25 additions and 13 deletions

View File

@@ -79,6 +79,20 @@ namespace YAML
: RepresentationException(line_, column_, ErrorMsg::KEY_NOT_FOUND) {}
};
template <typename T>
class TypedKeyNotFound: public KeyNotFound {
public:
TypedKeyNotFound(int line_, int column_, const T& key_)
: KeyNotFound(line_, column_), key(key_) {}
T key;
};
template <typename T>
TypedKeyNotFound <T> MakeTypedKeyNotFound(int line, int column, const T& key) {
return TypedKeyNotFound <T> (line, column, key);
}
class BadDereference: public RepresentationException {
public:
BadDereference()

View File

@@ -119,7 +119,7 @@ namespace YAML
}
}
throw KeyNotFound(m_line, m_column);
throw MakeTypedKeyNotFound(m_line, m_column, key);
}
template <typename T>