TCPSPSuite
errors.hpp
1 #ifndef ERRORS_H
2 #define ERRORS_H
3 
4 #include "../util/log.hpp"
5 
6 class Instance;
7 class Storage;
8 class SolverConfig;
9 
10 class RuntimeError : public std::exception {
11 public:
12  RuntimeError(const Instance &instance, int seed, int fault_code, std::string reason = std::string("")) noexcept;
13 
14  virtual unsigned int EXCEPTION_ID() const { return 0 ; };
15 
16  int get_seed() const;
17  const Instance &get_instance() const;
18  std::string get_reason() const;
19  int get_fault_code() const;
20  const std::vector<std::string> get_backtrace() const;
21 
22 protected:
23  int seed;
24  int fault_code;
25  const Instance * instance;
26  std::string reason;
27  std::vector<std::string> bt;
28 };
29 
30 class InconsistentResultError : public RuntimeError {
31 public:
32  InconsistentResultError(const Instance &instance, int seed, int fault_code_in,
33  std::string reason = std::string("")) noexcept;
34 
35  virtual unsigned int EXCEPTION_ID() const { return 1 ; };
36 };
37 
38 class InconsistentDataError : public RuntimeError {
39 public:
40  InconsistentDataError(const Instance &instance, int seed, int fault_code_in,
41  std::string reason = std::string("")) noexcept;
42 
43  virtual unsigned int EXCEPTION_ID() const { return 2 ; };
44 };
45 
46 class ConfigurationError : public RuntimeError {
47 public:
48  ConfigurationError(const Instance &instance, int seed, int fault_code_in,
49  std::string reason = std::string("")) noexcept;
50 
51  virtual unsigned int EXCEPTION_ID() const { return 3 ; };
52 };
53 
54 class IOError : public RuntimeError {
55 public:
56  IOError(const Instance &instance, int seed, int fault_code_in,
57  std::string reason = std::string("")) noexcept;
58 
59  virtual unsigned int EXCEPTION_ID() const { return 4 ; };
60 };
61 
62 // TODO handle reason!
63 class ErrorHandler {
64 public:
65  ErrorHandler(Storage &storage, std::string solver_id, std::string run_id,
66  std::string config_id_in, const SolverConfig *sconf_in = nullptr);
67  void handle(const RuntimeError &exception);
68 
69 private:
70  void handle_log(const RuntimeError &exception);
71  void handle_db(const RuntimeError &exception);
72  void handle_fail(const RuntimeError &exception);
73 
74  Storage &storage;
75  std::string solver_id;
76  std::string run_id;
77  std::string config_id;
78  const SolverConfig * sconf;
79 
80  Log l;
81 };
82 
83 #endif
Instance
a TCPSP instance
Definition: instance.hpp:24