On 02/20/2020 09:30 AM, David Wihl wrote:

I'm working on the Python client library for the Google Ads API. In some cases, 
we can start a request with a partial failure flag = True. This means that the 
request may contain say 1000 operations. If any of the operations fail, the 
request will return with a success status without an exception. Then the 
developer has to iterate through the list of operation return statuses to 
determine which specific ones failed.

I believe that it would be more idiomatic in Python (and other languages like 
Ruby) to throw an exception when one of these partial errors occur. That way 
there would be the same control flow if a major or minor error occurred.

What I have done in such circumstances is have a custom exception type, and 
store the errors there -- how much detail you save depends on how much you need 
to properly post-process the failed items.

For example:

# not tested

class PartialFailure(Exception):
    def __init__(self, failures):
        self.failures = failures

... lots of code ...
failures = []

try:
    an_operation_that_could_fail
except SomeException:
    failures.append(debugging info)

... more code ...

if failures:
    raise PartialFailure(failures)

# in the calling code
try:
    code_that_may_raise_partial_failures
except PartialFailure as e:
    for failure in e.failures:
       handle_failure

--
~Ethan~
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to