exception.h 971 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <stdexcept>
  3. namespace program {
  4. class ProgramArgumentsError : public std::logic_error {
  5. using std::logic_error::logic_error;
  6. };
  7. class ArgumentMixingError : public ProgramArgumentsError {
  8. public:
  9. ArgumentMixingError()
  10. : ProgramArgumentsError("Cannot mix together argument() and action() clauses in a program") {}
  11. };
  12. class ArgumentStructureError : public ProgramArgumentsError {
  13. public:
  14. ArgumentStructureError(std::string const & desc, std::string const & name)
  15. : ProgramArgumentsError(desc + " for argument " + name) {}
  16. };
  17. class NotAnArgumentError : public ProgramArgumentsError {
  18. public:
  19. NotAnArgumentError(std::string const & name)
  20. : ProgramArgumentsError("Unknown argument provided: " + name) {}
  21. };
  22. class IllegalPositionError : public ProgramArgumentsError {
  23. public:
  24. IllegalPositionError(std::string const & desc, size_t index)
  25. : ProgramArgumentsError(desc + " at index " + std::to_string(index)) {}
  26. };
  27. }