mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Set LoadFile and LoadAllFromFile to throw an exception if we can't load the file
This commit is contained in:
@@ -70,6 +70,7 @@ namespace YAML
|
|||||||
const char * const INVALID_ANCHOR = "invalid anchor";
|
const char * const INVALID_ANCHOR = "invalid anchor";
|
||||||
const char * const INVALID_ALIAS = "invalid alias";
|
const char * const INVALID_ALIAS = "invalid alias";
|
||||||
const char * const INVALID_TAG = "invalid tag";
|
const char * const INVALID_TAG = "invalid tag";
|
||||||
|
const char * const BAD_FILE = "bad file";
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline const std::string KEY_NOT_FOUND_WITH_KEY(const T&, typename disable_if<is_numeric<T> >::type * = 0) {
|
inline const std::string KEY_NOT_FOUND_WITH_KEY(const T&, typename disable_if<is_numeric<T> >::type * = 0) {
|
||||||
@@ -190,6 +191,11 @@ namespace YAML
|
|||||||
EmitterException(const std::string& msg_)
|
EmitterException(const std::string& msg_)
|
||||||
: Exception(Mark::null(), msg_) {}
|
: Exception(Mark::null(), msg_) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class BadFile: public Exception {
|
||||||
|
public:
|
||||||
|
BadFile(): Exception(Mark::null(), ErrorMsg::BAD_FILE) {}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // EXCEPTIONS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
#endif // EXCEPTIONS_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
||||||
|
@@ -30,6 +30,8 @@ namespace YAML
|
|||||||
|
|
||||||
Node LoadFile(const std::string& filename) {
|
Node LoadFile(const std::string& filename) {
|
||||||
std::ifstream fin(filename.c_str());
|
std::ifstream fin(filename.c_str());
|
||||||
|
if(!fin)
|
||||||
|
throw BadFile();
|
||||||
return Load(fin);
|
return Load(fin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +61,8 @@ namespace YAML
|
|||||||
|
|
||||||
std::vector<Node> LoadAllFromFile(const std::string& filename) {
|
std::vector<Node> LoadAllFromFile(const std::string& filename) {
|
||||||
std::ifstream fin(filename.c_str());
|
std::ifstream fin(filename.c_str());
|
||||||
|
if(!fin)
|
||||||
|
throw BadFile();
|
||||||
return LoadAll(fin);
|
return LoadAll(fin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user