exception.h 775 B

1234567891011121314151617181920212223242526272829
  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 ArgumentStructureError : public ProgramArgumentsError {
  8. public:
  9. ArgumentStructureError(std::string const & desc, std::string const & name)
  10. : ProgramArgumentsError(desc + " for argument " + name) {}
  11. };
  12. class NotAnArgumentError : public ProgramArgumentsError {
  13. public:
  14. NotAnArgumentError(std::string const & name)
  15. : ProgramArgumentsError("Unknown argument provided: " + name) {}
  16. };
  17. class IllegalPositionError : public ProgramArgumentsError {
  18. public:
  19. IllegalPositionError(std::string const & desc, size_t index)
  20. : ProgramArgumentsError(desc + " at index " + std::to_string(index)) {}
  21. };
  22. }