Initial commit
[ta/distributed-state-server.git] / src / dss / api / dss_error.py
1 # Copyright 2019 Nokia
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 #
15
16 import sys
17
18
19 class Error(Exception):
20     def __init__(self, description):
21         self.description = description
22
23     def get_description(self):
24         return self.description
25
26     def __str__(self):
27         return '%s' % self.description
28
29 def handle_exceptions(func):
30     def wrapper(self, *arg, **kwargs):
31         try:
32             return func(self, *arg, **kwargs)
33         except Error as exp:
34             raise
35         except Exception as exp:
36             raise Error(str(exp))
37     return wrapper
38
39
40 if __name__ == '__main__':
41     class Test:
42         @handle_exceptions
43         def test_raise(self):
44             raise Exception('Some error')
45
46     try:
47         test = Test()
48         test.test_raise()
49     except Error as exp:
50         print('Got exception %s' % exp)
51
52     try:
53         raise Error(sys.argv[1])
54     except Error as error:
55         print('Got exception %s' % str(error))
56     except Exception as exp:
57         print('Got exception %s' % str(exp))