diff options
Diffstat (limited to 'nova/exception.py')
-rw-r--r-- | nova/exception.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/nova/exception.py b/nova/exception.py index dc7b16cdb..82d08e840 100644 --- a/nova/exception.py +++ b/nova/exception.py @@ -1,12 +1,12 @@ # vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright [2010] [Anso Labs, LLC] -# +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -14,7 +14,7 @@ # limitations under the License. """ -Nova base exception handling, including decorator for re-raising +Nova base exception handling, including decorator for re-raising Nova-type exceptions. SHOULD include dedicated exception logging. """ @@ -23,16 +23,21 @@ import traceback import sys class Error(Exception): - pass + def __init__(self, message=None): + super(Error, self).__init__(message) -class ApiError(Error): +class ApiError(Error): def __init__(self, message='Unknown', code='Unknown'): self.message = message self.code = code + super(ApiError, self).__init__('%s: %s'% (code, message)) class NotFound(Error): pass +class Duplicate(Error): + pass + class NotAuthorized(Error): pass @@ -42,12 +47,12 @@ def wrap_exception(f): return f(*args, **kw) except Exception, e: if not isinstance(e, Error): - # exc_type, exc_value, exc_traceback = sys.exc_info() + # exc_type, exc_value, exc_traceback = sys.exc_info() logging.exception('Uncaught exception') - # logging.debug(traceback.extract_stack(exc_traceback)) + # logging.debug(traceback.extract_stack(exc_traceback)) raise Error(str(e)) raise _wrap.func_name = f.func_name return _wrap - + |