DBGlobalErrorResponseHandler

@interface DBGlobalErrorResponseHandler : NSObject

Allows for consistent, global handling of route-specific error types, as well as general network errors.

Normally, error handling is done on a request-by-request basis, in the supplied response handler. However, it is convenient to handle some error behavior consistently, regardless of the request or the endpoint. An example of this might be implementing retry logic for all rate-limiting errors, regardless of their source. For implementing global error handling for general networking errors like rate-limiting, one of the registerNetworkErrorResponseBlock: methods should be used. For implementing global error handling for route-specific errors, one of the registerRouteErrorResponseBlock: methods should be used.

For the route-specific error handling, you may supply either the direct route error type, or any type that the route error type contains as an instance field (or an instance field of an instance field, and so on).

Note

These globally supplied response handlers will be executed in place of the original request-specific response handler. At most one global response handler will be executed, with the prioirty going to the general network response handler, followed by the handler that is associated directly with the route’s error response type, followed by the handler associated with the first matching instance field.
  • Convenience method for registering a global error handler for a specific route error type.

    Declaration

    Objective-C

    + (void)registerRouteErrorResponseBlock:
                (nonnull DBRouteErrorResponseBlock)routeErrorResponseBlock
                             routeErrorType:(nonnull Class)routeErrorType;

    Swift

    class func registerRouteErrorResponseBlock(_ routeErrorResponseBlock: @escaping DBRouteErrorResponseBlock, routeErrorType: AnyClass)

    Parameters

    routeErrorResponseBlock

    The response block for globally handling the route error.

    routeErrorType

    The error type with which to associate the supplied response block. Note, this method searches the route error type’s instance fields recursively, so this error type may potentially match not only the route error type, but any of its instance fields, and its instance fields’ instance fields, and so on.

  • Registers a global error handler for a specific route error type.

    Declaration

    Objective-C

    + (void)registerRouteErrorResponseBlock:
                (nonnull DBRouteErrorResponseBlock)routeErrorResponseBlock
                             routeErrorType:(nonnull Class)routeErrorType
                                      queue:(nullable NSOperationQueue *)queue;

    Swift

    class func registerRouteErrorResponseBlock(_ routeErrorResponseBlock: @escaping DBRouteErrorResponseBlock, routeErrorType: AnyClass, queue: OperationQueue?)

    Parameters

    routeErrorResponseBlock

    The response block for globally handling the route error.

    routeErrorType

    The error type with which to associate the supplied response block. Note, this method searches the route error type’s instance fields recursively, so this error type may potentially match not only the route error type, but any of its instance fields, and its instance fields’ instance fields, and so on.

    queue

    The operation queue on which to execute the supplied global response handler.

  • Removes the global error handler associated with the supplied error type.

    routeErrorType The associated error type of the response handler to be removed.

    Declaration

    Objective-C

    + (void)removeRouteErrorResponseBlockWithRouteErrorType:
        (nonnull Class)routeErrorType;

    Swift

    class func removeRouteErrorResponseBlock(withRouteErrorType routeErrorType: AnyClass)
  • Convenience method for registering a single global error handler for handling general network errors.

    Note

    Only one block at a time may be set for handling all general network errors.

    Declaration

    Objective-C

    + (void)registerNetworkErrorResponseBlock:
        (nonnull DBNetworkErrorResponseBlock)networkErrorResponseBlock;

    Swift

    class func registerNetworkErrorResponseBlock(_ networkErrorResponseBlock: @escaping DBNetworkErrorResponseBlock)

    Parameters

    networkErrorResponseBlock

    The response block for globally handling network errors.

  • Registers a single global error handler for handling general network errors.

    Note

    Only one block at a time may be set for handling all general network errors.

    Declaration

    Objective-C

    + (void)registerNetworkErrorResponseBlock:
                (nonnull DBNetworkErrorResponseBlock)networkErrorResponseBlock
                                        queue:(nullable NSOperationQueue *)queue;

    Swift

    class func registerNetworkErrorResponseBlock(_ networkErrorResponseBlock: @escaping DBNetworkErrorResponseBlock, queue: OperationQueue?)

    Parameters

    networkErrorResponseBlock

    The response block for globally handling network errors.

    queue

    The operation queue on which to execute the supplied global response handler.

  • Removes the single global error handler for general network errors.

    Declaration

    Objective-C

    + (void)removeNetworkErrorResponseBlock;

    Swift

    class func removeNetworkErrorResponseBlock()