teqp 0.19.1
Loading...
Searching...
No Matches
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
42 public:
43 NotImplementedError(const std::string& msg) : teqpException(200, msg) {};
44 };
45
48 private:
49 auto errors_to_string(const std::vector<std::string> &errors, const std::string delim = "|/|\\|"){
50 std::string o = "";
51 if (errors.empty()){ return o; }
52 o = errors[0];
53 for (auto j = 1U; j < errors.size(); ++j){
54 o += delim + errors[j];
55 }
56 return o;
57 }
58 public:
59 JSONValidationError(const std::vector<std::string>& errors) : teqpException(300, errors_to_string(errors)) {};
60 };
61
62}; // namespace teqp
InvalidArgument(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)