Error Handling
Overview
The SDK provides a unified approach to handling errors by throwing a WalletException/WalletError object as a response
whenever an error is returned by the Paysafe Wallet SDK.
| Android | iOS | Description |
|---|---|---|
WalletException | WalletError | The base exception type in Android. The error enum in iOS. |
NotConfiguredException | .notConfigured | The configure() method has not been called. |
DataException | .dataError | API call data-related issue with provided ErrorDetails. |
InternalErrorException | .internalError | Internal SDK error with specific reason. |
ServiceUnavailableException | .serviceUnavailable | Paysafe backend is temporary unavailable. |
TokenExpiredException | .tokenExpired | Access token has expired. |
ErrorDetails
Every DataException/.dataError object has additional information about the specific API error.
| Field | Description |
|---|---|
httpStatus | The HTTP status code. |
code | Specific Paysafe error code. |
message | Description of the error. |
details | Details of any parameter value errors. |
fieldErrors | List of field with errors. |
Handling Errors
- Android
- iOS
The errors on Android are represented by standard exceptions extended from WalletException class. Surround any SDK
operation in runCatching with onSuccess and onFailure:
runCatching {
userService.getProfile(listOf(ProfileIncludes.ACCOUNTS))
}.onSuccess { customerInfo ->
Log.d(TAG, customerInfo.toString())
}.onFailure { exception ->
Log.d(TAG, exception.toString())
}
Try-catch blocks can also be used:
try {
val customerInfo = userService.getProfile(listOf(ProfileIncludes.ACCOUNTS))
Log.d(TAG, customerInfo.toString())
} catch (exception: WalletException){
Log.d(TAG, exception.toString())
}
The errors on iOS are represented by the WalletError enum. Every SDK operation includes completion handler
with .failure case containing the specific error:
profile.getProfile(include: [.contactInfo], completion: { result in
switch result {
case .success(let customerInfo):
// Display customer information
case .failure(let error):
// Handle error
}
})