# -*- coding: utf-8 -*-
"""
FileName: exceptions
Author: Tao Hao
@contact: taohaohust@outlook.com
Created time: 2019/5/30
Description:
Changelog:
"""
def add_status_code(code):
def class_decorator(cls):
cls.status_code = code
return cls
return class_decorator
class BaseException_(Exception):
def __init__(self, message, status_code=None):
super(BaseException_, self).__init__(message)
self.status_code = None
if status_code is not None:
self.status_code = status_code
@add_status_code(400)
class InvalidUsage(BaseException_):
pass
class UriDuplicated(BaseException_):
pass
@add_status_code(405)
class MethodNotAllowed(BaseException_):
def __init__(self, method):
msg = "method: %s not allowed" % method
super(MethodNotAllowed, self).__init__(msg)
@add_status_code(404)
class NotFound(BaseException_):
def __init__(self, uri):
msg = "uri: %s not found" % uri
super(NotFound, self).__init__(msg)
if __name__ == "__main__":
e = InvalidUsage("test")