Skip to content

Commit d140513

Browse files
committed
fix: error-handling hygiene (#156)
- err.get("error", text) fallback, avoid KeyError masking real HTTP error - raise ... from None for JSONDecodeError chain - narrow bare except to ParameterRequiredError - ClientError/ServerError call super().__init__ so str(err) informative
1 parent e3b011a commit d140513

3 files changed

Lines changed: 5 additions & 3 deletions

File tree

datamaxi/_dispatch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ def raise_for_error(status_code, text, headers):
7171
try:
7272
err = json.loads(text)
7373
except JSONDecodeError:
74-
raise ClientError(status_code, text, None, headers)
74+
raise ClientError(status_code, text, None, headers) from None
7575
error_data = None
7676
if "data" in err:
7777
error_data = err["data"]
78-
raise ClientError(status_code, err["error"], headers, error_data)
78+
raise ClientError(status_code, err.get("error", text), headers, error_data)
7979
raise ServerError(status_code, text)
8080

8181

datamaxi/error.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ def __init__(self, status_code, error_message, header, error_data=None):
1212
self.header = header
1313
# return data if it's returned from server
1414
self.error_data = error_data
15+
super().__init__(f"{status_code}: {error_message}")
1516

1617

1718
class ServerError(Error):
1819
def __init__(self, status_code, message):
1920
self.status_code = status_code
2021
self.message = message
22+
super().__init__(f"{status_code}: {message}")
2123

2224

2325
class ParameterRequiredError(Error):

datamaxi/lib/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def check_at_least_one_set_parameters(params):
4545
check_required_parameter(p[0], p[1])
4646
at_least_one_set = True
4747
break
48-
except: # noqa: E722
48+
except ParameterRequiredError:
4949
pass
5050

5151
if not at_least_one_set:

0 commit comments

Comments
 (0)