From 7e41b2b8cd87d6e61e5b14498b44c3dc67074b7f Mon Sep 17 00:00:00 2001 From: zhuxiaolong37 Date: Tue, 4 Nov 2025 13:40:09 +0800 Subject: [PATCH] Exceptions: Added Error Detail, ArgumentName, ArgumentValue and returned them --- alibabacloud_oss_v2/_client.py | 18 ++++++++++++++++++ alibabacloud_oss_v2/aio/_aioclient.py | 9 +++++++++ alibabacloud_oss_v2/exceptions.py | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/alibabacloud_oss_v2/_client.py b/alibabacloud_oss_v2/_client.py index 58105a7..c5d3c28 100644 --- a/alibabacloud_oss_v2/_client.py +++ b/alibabacloud_oss_v2/_client.py @@ -642,6 +642,9 @@ def _to_service_error(response: HttpResponse) -> exceptions.ServiceError: code = 'BadErrorResponse' message = '' ec = '' + error_detail = '' + argument_name = '' + argument_value = '' request_id = '' err_body = b'' try: @@ -656,6 +659,9 @@ def _to_service_error(response: HttpResponse) -> exceptions.ServiceError: message = error_fileds.get('Message', '') code = error_fileds.get('Code', '') ec = error_fileds.get('EC', '') + error_detail = error_fileds.get('ErrorDetail', '') + argument_name = error_fileds.get('ArgumentName', '') + argument_value = error_fileds.get('ArgumentValue', '') request_id = error_fileds.get('RequestId', '') else: message = f'Expect root node Error, but get {root.tag}.' @@ -679,6 +685,9 @@ def _to_service_error(response: HttpResponse) -> exceptions.ServiceError: message=message, request_id=request_id or response.headers.get('x-oss-request-id', ''), ec=ec or response.headers.get('x-oss-ec', ''), + error_detail=error_detail, + argument_name=argument_name, + argument_value=argument_value, timestamp=timestamp, request_target=f'{response.request.method} {response.request.url}', snapshot=content, @@ -695,6 +704,9 @@ def _to_service_error_json(response: HttpResponse) -> exceptions.ServiceError: code = 'BadErrorResponse' message = '' ec = '' + error_detail = '' + argument_name = '' + argument_value = '' request_id = '' err_body = b'' try: @@ -711,6 +723,9 @@ def _to_service_error_json(response: HttpResponse) -> exceptions.ServiceError: message = error_fileds.get('Message', '') code = error_fileds.get('Code', '') ec = error_fileds.get('EC', '') + error_detail = error_fileds.get('ErrorDetail', '') + argument_name = error_fileds.get('ArgumentName', '') + argument_value = error_fileds.get('ArgumentValue', '') request_id = error_fileds.get('RequestId', '') else: message = f'Expect root node Error, but get {root.keys()}.' @@ -734,6 +749,9 @@ def _to_service_error_json(response: HttpResponse) -> exceptions.ServiceError: message=message, request_id=request_id or response.headers.get('x-oss-request-id', ''), ec=ec or response.headers.get('x-oss-ec', ''), + error_detail=error_detail, + argument_name=argument_name, + argument_value=argument_value, timestamp=timestamp, request_target=f'{response.request.method} {response.request.url}', snapshot=content, diff --git a/alibabacloud_oss_v2/aio/_aioclient.py b/alibabacloud_oss_v2/aio/_aioclient.py index b4a077a..8cebcac 100644 --- a/alibabacloud_oss_v2/aio/_aioclient.py +++ b/alibabacloud_oss_v2/aio/_aioclient.py @@ -354,6 +354,9 @@ async def _to_service_error(response: AsyncHttpResponse) -> exceptions.ServiceEr code = 'BadErrorResponse' message = '' ec = '' + error_detail = '' + argument_name = '' + argument_value = '' request_id = '' err_body = b'' try: @@ -368,6 +371,9 @@ async def _to_service_error(response: AsyncHttpResponse) -> exceptions.ServiceEr message = error_fileds.get('Message', '') code = error_fileds.get('Code', '') ec = error_fileds.get('EC', '') + error_detail = error_fileds.get('ErrorDetail', '') + argument_name = error_fileds.get('ArgumentName', '') + argument_value = error_fileds.get('ArgumentValue', '') request_id = error_fileds.get('RequestId', '') else: message = f'Expect root node Error, but get {root.tag}.' @@ -391,6 +397,9 @@ async def _to_service_error(response: AsyncHttpResponse) -> exceptions.ServiceEr message=message, request_id=request_id or response.headers.get('x-oss-request-id', ''), ec=ec or response.headers.get('x-oss-ec', ''), + error_detail=error_detail, + argument_name=argument_name, + argument_value=argument_value, timestamp=timestamp, request_target=f'{response.request.method} {response.request.url}', snapshot=content, diff --git a/alibabacloud_oss_v2/exceptions.py b/alibabacloud_oss_v2/exceptions.py index 459c84f..0489a67 100644 --- a/alibabacloud_oss_v2/exceptions.py +++ b/alibabacloud_oss_v2/exceptions.py @@ -109,6 +109,9 @@ class ServiceError(BaseError): Request Id: {request_id}.\n\ Message: {message}.\n\ EC: {ec}.\n\ + ErrorDetail: {error_detail}\n\ + ArgumentName: {argument_name}\n\ + ArgumentValue: {argument_value}\n\ Timestamp: {timestamp}.\n\ Request Endpoint: {request_target}.' @@ -119,6 +122,9 @@ def __init__(self, **kwargs): self.message = kwargs.get("message", None) self.request_id = kwargs.get("request_id", None) self.ec = kwargs.get("ec", None) + self.error_detail = kwargs.get("error_detail", None) + self.argument_name = kwargs.get("argument_name", None) + self.argument_value = kwargs.get("argument_value", None) self.timestamp = kwargs.get("timestamp", None) self.request_target = kwargs.get("request_target", None) self.snapshot = kwargs.get("snapshot", None)