exceptions.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3. """
  4. exceptions.py
  5. ~~~~~~~~~~
  6. """
  7. from __future__ import absolute_import, unicode_literals
  8. import six
  9. from typing import Optional
  10. from library import to_binary, to_text
  11. from .base import AliErrorCode
  12. class AliException(Exception):
  13. def __init__(self, errCode, errMsg, client = None, request = None, response = None):
  14. super(AliException, self).__init__(errMsg)
  15. self.errCode = errCode
  16. self.errMsg = errMsg
  17. self.client = client
  18. self.request = request
  19. self.response = response
  20. def __str__(self):
  21. if self.client:
  22. _repr = '{kclass}(client: {client}, errCode: {errCode}, errMsg: {errMsg})'.format(
  23. kclass = self.__class__.__name__,
  24. client = repr(self.client),
  25. errCode = self.errCode,
  26. errMsg = self.errMsg)
  27. else:
  28. _repr = '{kclass}(errCode: {errCode}, errMsg: {errMsg})'.format(
  29. kclass = self.__class__.__name__,
  30. errCode = self.errCode,
  31. errMsg = self.errMsg)
  32. if six.PY2:
  33. return to_binary(_repr)
  34. else:
  35. return to_text(_repr)
  36. def __repr__(self):
  37. return str(self)
  38. class AliValidationError(AliException):
  39. def __init__(self, errmsg, lvalue, rvalue, client = None):
  40. # type: (basestring, basestring, basestring, Optional[object])->None
  41. super(AliValidationError, self).__init__(errCode = AliErrorCode.MY_VALID_ERROR,
  42. errMsg = '{}({} != {})'.format(errmsg, lvalue, rvalue),
  43. client = client)
  44. class AliPayGatewayException(AliException):
  45. pass
  46. class AliPayServiceException(AliException):
  47. pass
  48. class AliPayNetworkException(AliException):
  49. pass