Swift / Error handling

Swift: map API errors to user actions

Map 401, 402, 429, server failures, configuration errors and generic Swift SDK errors to explicit user actions.

These examples use the local VedikaSDK package at sdks/swift in the Vedika repository. The current Swift client covers Vastu. The package requires Swift 5.9, iOS 15 or macOS 12.

Choose an action from the error type

Keep the decision separate from UI text. This example returns an app-owned enum; it does not send requests, change an account, or schedule a retry.

import VedikaSDK

enum BasicAction: Equatable {
    case reviewAccess, reviewBalance, wait
    case reviewService, reviewConfiguration, reviewRequest
}

func basicAction(for error: Error) -> BasicAction {
    switch error {
    case is VedikaConfigurationError:
        return .reviewConfiguration
    case is VedikaAuthError:
        return .reviewAccess
    case is VedikaInsufficientCredits:
        return .reviewBalance
    case is VedikaRateLimitError:
        return .wait
    case is VedikaServerError:
        return .reviewService
    case let failure as VedikaApiError:
        return failure.statusCode == 403
            ? .reviewAccess : .reviewRequest
    default:
        return .reviewRequest
    }
}

The current mapping

ResponseSwift errorNext step
401VedikaAuthErrorReview key configuration.
402VedikaInsufficientCreditsReview wallet balance.
429VedikaRateLimitErrorRead the optional wait hint.
5xxVedikaServerErrorReview service status and the result.
403 / otherVedikaApiErrorReview access or request details.

Keep account decisions explicit

A 403 has no dedicated subscription-error class in this Swift SDK. Client construction can throw VedikaConfigurationError, which is separate from VedikaApiError. A generic API error may also have no HTTP status after a transport failure.

These actions describe what the user can review. An error alone does not prove whether a charge or refund occurred. Confirm account state before another paid request.

Continue with API documentation, current pricing, or support.