All failures the Encore SDK reports are subclasses of EncoreError, organized into four categories by cause. show() never throws: presentation failures arrive as values, in NotPresented(NotPresentedReason.Error(...)) on the PresentationResult, and claim failures as AdvertiserOutcome.Failed(error). EncoreError extends Exception because errors still travel as throwables where the platform expects them: inside the SDK, and out of your purchase controller, which throws for a real purchase failure and lands on the record as PublisherOutcome.Failed.
Hierarchy
Error categories
Integration: SDK misuse
Errors caused by incorrect SDK setup. These are preventable by following the integration guide.
Protocol: response failures
Errors from the API layer: HTTP failures, malformed responses, or API-level errors.
Transport: infrastructure failures
Errors from the network or persistence layer.
Domain: business rule violations
Usage
show() never throws. A presentation-level failure arrives as NotPresented(NotPresentedReason.Error(...)), and result.error reads it directly:
A claim that errored after the sheet appeared surfaces on the advertiser axis instead, as AdvertiserOutcome.Failed(error); see PresentationResult.
In production, log result.error broadly. Only branch on specific subtypes when you handle them differently (e.g. showing a “no internet” message for Transport.Network).