X-Git-Url: http://git.tdb.fi/?p=libs%2Fdatafile.git;a=blobdiff_plain;f=source%2Fexcept.h;fp=source%2Fexcept.h;h=e68ec481f4aa869ada66a660c59e06e195b6b34b;hp=0000000000000000000000000000000000000000;hb=ed78b585cfc4ecb44972e346857e887b183fd7a7;hpb=0ea5e96f078d85fe4229784e6499d19c67271219 diff --git a/source/except.h b/source/except.h new file mode 100644 index 0000000..e68ec48 --- /dev/null +++ b/source/except.h @@ -0,0 +1,62 @@ +#ifndef MSP_DATAFILE_EXCEPT_H_ +#define MSP_DATAFILE_EXCEPT_H_ + +#include + +namespace Msp { +namespace DataFile { + +class data_error: public std::runtime_error +{ +private: + std::string source; + unsigned line; + +public: + data_error(const std::string &, unsigned, const std::string &); + data_error(const std::string &, unsigned, const std::exception &); + virtual ~data_error() throw() { } + + const std::string &get_source() const { return source; } + unsigned get_line() const { return line; } + +private: + std::string make_what(const std::string &, unsigned, const std::string &); +}; + + +class parse_error: public std::runtime_error +{ +public: + parse_error(const std::string &); + virtual ~parse_error() throw() { } +}; + + +class syntax_error: public std::runtime_error +{ +public: + syntax_error(const std::string &t); + virtual ~syntax_error() throw() { } +}; + + +class bad_definition: public std::runtime_error +{ +public: + bad_definition(const std::string &w); + virtual ~bad_definition() throw() { } +}; + + +class nesting_error: public std::logic_error +{ +public: + nesting_error(const std::string &); + virtual ~nesting_error() throw() { } +}; + +} // namespace DataFile +} // namespace Msp + +#endif