improve error handling

This commit is contained in:
Kenneth Kehl
2025-09-03 10:33:27 -07:00
parent d1a4827589
commit c6e1e662ad
2 changed files with 11 additions and 1 deletions

View File

@@ -80,6 +80,7 @@ class RedisClient:
try: try:
return self.scripts["delete-keys-by-pattern"](args=[pattern]) return self.scripts["delete-keys-by-pattern"](args=[pattern])
except Exception as e: except Exception as e:
current_app.logger.exception(f"Exception in delete_by_pattern pattern={pattern}")
self.__handle_exception( self.__handle_exception(
e, raise_exception, "delete-by-pattern", pattern e, raise_exception, "delete-by-pattern", pattern
) )
@@ -129,6 +130,7 @@ class RedisClient:
result = pipe.execute() result = pipe.execute()
return result[2] > limit return result[2] > limit
except Exception as e: except Exception as e:
current_app.logger.exception(f"Exception in exceeded_rate_limit cache_key {cache_key} limit = {limit}")
self.__handle_exception( self.__handle_exception(
e, raise_exception, "rate-limit-pipeline", cache_key e, raise_exception, "rate-limit-pipeline", cache_key
) )

View File

@@ -83,7 +83,8 @@ class RecipientCSV:
def guestlist(self, value): def guestlist(self, value):
try: try:
self._guestlist = list(value) self._guestlist = list(value)
except TypeError: except TypeError as te:
current_app.logger.exception(f"Type error setting the guest list to {value}")
self._guestlist = [] self._guestlist = []
@property @property
@@ -111,6 +112,7 @@ class RecipientCSV:
try: try:
self._placeholders = list(value) + self.recipient_column_headers self._placeholders = list(value) + self.recipient_column_headers
except TypeError: except TypeError:
current_app.logger.exception(f"TypeError setting the placeholders to {value}")
self._placeholders = self.recipient_column_headers self._placeholders = self.recipient_column_headers
self.placeholders_as_column_keys = [ self.placeholders_as_column_keys = [
InsensitiveDict.make_key(placeholder) for placeholder in self._placeholders InsensitiveDict.make_key(placeholder) for placeholder in self._placeholders
@@ -350,6 +352,7 @@ class RecipientCSV:
value, international=self.allow_international_sms value, international=self.allow_international_sms
) )
except (InvalidEmailError, InvalidPhoneError) as error: except (InvalidEmailError, InvalidPhoneError) as error:
current_app.logger.exception(f"Email or phone error for {value}")
return str(error) return str(error)
if InsensitiveDict.make_key(key) not in self.placeholders_as_column_keys: if InsensitiveDict.make_key(key) not in self.placeholders_as_column_keys:
@@ -511,6 +514,7 @@ def is_us_phone_number(number):
try: try:
return _get_country_code(number) == us_prefix return _get_country_code(number) == us_prefix
except NumberParseException: except NumberParseException:
current_app.logger.exception("NumberParseException checking if phone number is US number")
return False return False
@@ -599,6 +603,7 @@ def validate_us_phone_number(number):
raise InvalidPhoneError("Phone number range is not in use") raise InvalidPhoneError("Phone number range is not in use")
raise InvalidPhoneError("Phone number is not possible") raise InvalidPhoneError("Phone number is not possible")
except NumberParseException as exc: except NumberParseException as exc:
current_app.logger.exception("NumberParseException validating US phone number")
raise InvalidPhoneError(exc._msg) from exc raise InvalidPhoneError(exc._msg) from exc
@@ -655,6 +660,7 @@ def try_validate_and_format_phone_number(number, international=None, log_msg=Non
try: try:
return validate_and_format_phone_number(number, international) return validate_and_format_phone_number(number, international)
except InvalidPhoneError as exc: except InvalidPhoneError as exc:
current_app.logger.exception("InvalidPhoneNumber while trying to validate and format phone number")
if log_msg: if log_msg:
current_app.logger.warning("{}: {}".format(log_msg, exc)) current_app.logger.warning("{}: {}".format(log_msg, exc))
return number return number
@@ -689,6 +695,7 @@ def validate_email_address(email_address): # noqa (C901 too complex)
try: try:
hostname = hostname.encode("idna").decode("ascii") hostname = hostname.encode("idna").decode("ascii")
except UnicodeError: except UnicodeError:
current_app.logger.exception("UnicodeError validating email address")
raise InvalidEmailError raise InvalidEmailError
parts = hostname.split(".") parts = hostname.split(".")
@@ -731,6 +738,7 @@ def format_phone_number_human_readable(phone_number):
phone_number = validate_phone_number(phone_number, international=True) phone_number = validate_phone_number(phone_number, international=True)
except InvalidPhoneError: except InvalidPhoneError:
# if there was a validation error, we want to shortcut out here, but still display the number on the front end # if there was a validation error, we want to shortcut out here, but still display the number on the front end
current_app.logger.exception("InvalidPhoneError trying to format_phone_number_human_readable()")
return phone_number return phone_number
international_phone_info = get_international_phone_info(phone_number) international_phone_info = get_international_phone_info(phone_number)