teqp 0.22.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Concepts
exceptions.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <exception>
4
5namespace teqp {
6
7 class teqpcException : public std::exception {
8 public:
9 const int code;
10 const std::string msg;
11 teqpcException(int code, const std::string& msg) : code(code), msg(msg) {};
12 const char* what() const noexcept override {
13 return msg.c_str();
14 }
15 };
16
17 class teqpException : public std::exception {
18 protected:
19 const int code;
20 const std::string msg;
21 teqpException(int code, const std::string& msg) : code(code), msg(msg) {};
22 public:
23 const char* what() const noexcept override {
24 return msg.c_str();
25 }
26 };
27
28 // Exceptions related to arguments
30 public:
31 InvalidArgument(const std::string& msg) : teqpException(1, msg) {};
32 };
33
34 // Exceptions related to calculations
36 public:
37 IterationFailure(const std::string& msg) : teqpException(100, msg) {};
38 };
40 class InvalidValue : public teqpException {
41 public:
42 InvalidValue(const std::string& msg) : teqpException(101, msg) {};
43 };
44
46 public:
47 NotImplementedError(const std::string& msg) : teqpException(200, msg) {};
48 };
49
52 private:
53 auto errors_to_string(const std::vector<std::string> &errors, const std::string delim = "|/|\|"){
54 std::string o = "";
55 if (errors.empty()){ return o; }
56 o = errors[0];
57 for (auto j = 1U; j < errors.size(); ++j){
58 o += delim + errors[j];
59 }
60 return o;
61 }
62 public:
63 JSONValidationError(const std::vector<std::string>& errors) : teqpException(300, errors_to_string(errors)) {};
64 };
65
66}; // namespace teqp
InvalidArgument(const std::string &msg)
InvalidValue(const std::string &msg)
IterationFailure(const std::string &msg)
Validation of a JSON schema failed.
JSONValidationError(const std::vector< std::string > &errors)
NotImplementedError(const std::string &msg)
const std::string msg
const char * what() const noexcept override
teqpException(int code, const std::string &msg)
const std::string msg
const char * what() const noexcept override
teqpcException(int code, const std::string &msg)