exceptions.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from .request import TeaRequest
  2. class TeaException(Exception):
  3. def __init__(self, dic):
  4. self.code = dic.get("code")
  5. self.message = dic.get("message")
  6. self.data = dic.get("data")
  7. self.description = dic.get("description")
  8. self.accessDeniedDetail = dic.get("accessDeniedDetail")
  9. if isinstance(dic.get("data"), dict) and dic.get("data").get("statusCode") is not None:
  10. self.statusCode = dic.get("data").get("statusCode")
  11. def __str__(self):
  12. return f'Error: {self.code} {self.message} Response: {self.data}'
  13. class ValidateException(Exception):
  14. pass
  15. class RequiredArgumentException(ValidateException):
  16. def __init__(self, arg):
  17. self.arg = arg
  18. def __str__(self):
  19. return f'"{self.arg}" is required.'
  20. class RetryError(Exception):
  21. def __init__(self, message):
  22. self.message = message
  23. self.data = None
  24. class UnretryableException(TeaException):
  25. def __init__(
  26. self,
  27. request: TeaRequest,
  28. ex: Exception
  29. ):
  30. self.last_request = request
  31. self.inner_exception = ex
  32. if isinstance(ex, TeaException):
  33. super().__init__({
  34. 'code': ex.code,
  35. 'message': ex.message,
  36. 'data': ex.data
  37. })
  38. else:
  39. super().__init__({
  40. 'message': repr(ex),
  41. })
  42. def __str__(self):
  43. return str(self.inner_exception)