EPANET  3.0
EPANET Development Project
error.h
Go to the documentation of this file.
1 /* EPANET 3
2  *
3  * Copyright (c) 2016 Open Water Analytics
4  * Licensed under the terms of the MIT License (see the LICENSE file for details).
5  *
6  */
7 
10 
11 #ifndef ERROR_H_
12 #define ERROR_H_
13 
14 #include <string>
15 
16 //-----------------------------------------------------------------------------
17 // Abstract exception class
18 //-----------------------------------------------------------------------------
19 class ENerror
20 {
21  public:
22  ENerror();
23  virtual ~ENerror() = 0;
24 
25  int code;
26  std::string msg;
27 };
28 
29 //-----------------------------------------------------------------------------
30 // System error exception class
31 //-----------------------------------------------------------------------------
32 class SystemError : public ENerror
33 {
34  public:
35  enum SystemErrors {
36  OUT_OF_MEMORY, //101
37  NO_NETWORK_DATA, //102
38 
39  HEADLOSS_MODEL_NOT_OPENED, //103
40  DEMAND_MODEL_NOT_OPENED, //104
41  LEAKAGE_MODEL_NOT_OPENED, //105
42  QUALITY_MODEL_NOT_OPENED, //106
43  MATRIX_SOLVER_NOT_OPENED, //107
44 
45  HYDRAULIC_SOLVER_NOT_OPENED, //108
46  QUALITY_SOLVER_NOT_OPENED, //109
47  HYDRAULICS_SOLVER_FAILURE, //110
48  QUALITY_SOLVER_FAILURE, //111
49  SOLVER_NOT_INITIALIZED, //112
50  SYSTEM_ERROR_LIMIT
51  };
52  SystemError(int type);
53 };
54 
55 //-----------------------------------------------------------------------------
56 // Input error exception class
57 //-----------------------------------------------------------------------------
58 class InputError : public ENerror
59 {
60  public:
61  enum InputErrors {
62  ERRORS_IN_INPUT_DATA, //200
63  CANNOT_CREATE_OBJECT, //201
64  TOO_FEW_ITEMS, //202
65  INVALID_KEYWORD, //203
66  DUPLICATE_ID, //204
67  UNDEFINED_OBJECT, //205
68  INVALID_NUMBER, //206
69  INVALID_TIME, //207
70  UNSPECIFIED, //208
71  INPUT_ERROR_LIMIT
72  };
73  InputError(int type, std::string token);
74 };
75 
76 //-----------------------------------------------------------------------------
77 // Network error class
78 //-----------------------------------------------------------------------------
79 class NetworkError : public ENerror
80 {
81  public:
82  enum NetworkErrors {
83  ILLEGAL_VALVE_CONNECTION, //220
84  TOO_FEW_NODES, //223
85  NO_FIXED_GRADE_NODES, //224
86  INVALID_TANK_LEVELS, //225
87  NO_PUMP_CURVE, //226
88  INVALID_PUMP_CURVE, //227
89  INVALID_CURVE_DATA, //230
90  INVALID_VOLUME_CURVE, //231
91  UNCONNECTED_NODE, //233
92  NETWORK_ERROR_LIMIT
93  };
94  NetworkError(int type, std::string id);
95 };
96 
97 //-----------------------------------------------------------------------------
98 // File error exception class
99 //-----------------------------------------------------------------------------
100 class FileError : public ENerror
101 {
102  public:
103  enum FileErrors {
104  DUPLICATE_FILE_NAMES, //301
105  CANNOT_OPEN_INPUT_FILE, //302
106  CANNOT_OPEN_REPORT_FILE, //303
107  CANNOT_OPEN_OUTPUT_FILE, //304
108  CANNOT_OPEN_HYDRAULICS_FILE, //305
109  INCOMPATIBLE_HYDRAULICS_FILE, //306
110  CANNOT_READ_HYDRAULICS_FILE, //307
111  CANNOT_WRITE_TO_OUTPUT_FILE, //308
112  CANNOT_WRITE_TO_REPORT_FILE, //309
113  NO_RESULTS_SAVED_TO_REPORT, //310
114  FILE_ERROR_LIMIT
115  };
116  FileError(int type);
117 };
118 
119 #endif
Definition: error.h:79
Definition: error.h:100
Definition: error.h:19
Definition: error.h:58
Definition: error.h:32