X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fexcept.h;h=ceb95e30f13a6ebeaf83950f5a2fc711054699a9;hb=e14c01b5775dd2e324b16ff49498db9b9113c523;hp=e68ec481f4aa869ada66a660c59e06e195b6b34b;hpb=ed78b585cfc4ecb44972e346857e887b183fd7a7;p=libs%2Fdatafile.git diff --git a/source/except.h b/source/except.h index e68ec48..ceb95e3 100644 --- a/source/except.h +++ b/source/except.h @@ -2,6 +2,8 @@ #define MSP_DATAFILE_EXCEPT_H_ #include +#include +#include namespace Msp { namespace DataFile { @@ -10,12 +12,13 @@ class data_error: public std::runtime_error { private: std::string source; - unsigned line; + unsigned line = 0; public: data_error(const std::string &, unsigned, const std::string &); data_error(const std::string &, unsigned, const std::exception &); - virtual ~data_error() throw() { } + data_error(const std::string &, unsigned, const data_error &); + virtual ~data_error() throw() = default; const std::string &get_source() const { return source; } unsigned get_line() const { return line; } @@ -29,7 +32,7 @@ class parse_error: public std::runtime_error { public: parse_error(const std::string &); - virtual ~parse_error() throw() { } + virtual ~parse_error() throw() = default; }; @@ -37,7 +40,7 @@ class syntax_error: public std::runtime_error { public: syntax_error(const std::string &t); - virtual ~syntax_error() throw() { } + virtual ~syntax_error() throw() = default; }; @@ -45,7 +48,7 @@ class bad_definition: public std::runtime_error { public: bad_definition(const std::string &w); - virtual ~bad_definition() throw() { } + virtual ~bad_definition() throw() = default; }; @@ -53,7 +56,30 @@ class nesting_error: public std::logic_error { public: nesting_error(const std::string &); - virtual ~nesting_error() throw() { } + virtual ~nesting_error() throw() = default; +}; + + +class unknown_keyword: public std::runtime_error +{ +public: + unknown_keyword(const std::string &); + virtual ~unknown_keyword() throw() = default; +}; + + +class invalid_signature: public std::runtime_error +{ +public: + invalid_signature(const std::string &, const std::string &); + virtual ~invalid_signature() throw() = default; +}; + + +class no_collection: public std::runtime_error +{ +public: + no_collection(const std::type_info &); }; } // namespace DataFile