# Result

sealed class Result<S, C>

The result of an asynchronous operation.

- If operation was successful the result will be represented as Success with value as a payload.

- If operation failed, result will be a Failure with the payload describing the failure.

Note that for idiomatic Kotlin you can use `when` expression to safely access value or errorCode and other methods like this:

    when (result) {
      is Success -> println(result.value)
      is Failure ->
         println("${result.errorCode}: ${result.errorMessage}. Debug code: ${result.debugCode}")
    }

Content copied to clipboard

From Java you can use one of helper methods: isSuccess() or isFailure() to define what kind of result you are dealing with. After that you can safely call value() or errorCode() to access the payload.

    if (result.isSuccess()) {
      println(result.value())
    } else if (result.isFailure()) {
      println(result.errorCode() + ": " + result.errorMessage() + ". Debug code: " + result.debugCode())
    }

Content copied to clipboard

Note: an attempt to access failure payload on a success result or vice-versa will throw an IllegalStateException.

#### Parameters

S

The success value if the operation was successful.

C

Error code type in the payload that provides insight about the failure.

#### Inheritors

Success
Failure

## Types

Failure
Link copied to clipboard
class Failure<S, C>(val errorCode: C, val errorMessage: String, val details: List<ErrorDetails> = emptyList(), val debugCode: String, val debugMessage: String) : Result<S, C>

Failed operation result, containing detailed description of the cause.

Success
Link copied to clipboard
class Success<S, C>(val value: S) : Result<S, C>

Successful operation result, containing resulting object.

## Functions

debugCode
Link copied to clipboard
fun debugCode(): String

More detailed "debug" error code for troubleshooting the failure

debugMessage
Link copied to clipboard
fun debugMessage(): String

Human-readable message containing additional debug information related to the possible cause of the failure.

details
Link copied to clipboard
fun details(): List<ErrorDetails>

More detailed descriptions of the error(s) causing the failure, if available. In many cases these are the actual errors returned from a server call. It is possible for a failure to happen without more detail that provided by the other fields, and this will be an empty list in such cases. (For example, error code NOT_AUTHORIZED has no additional details, the developer simply needs to call AuthorizationManager.authorize() before using the failing Mobile Payments SDK method).

errorCode
Link copied to clipboard
fun errorCode(): C

Error code of an unsuccessful operation

errorMessage
Link copied to clipboard
fun errorMessage(): String

Displayable message that summarizes the possible cause of the failure.

isFailure
Link copied to clipboard
fun isFailure(): Boolean

`true` if the operation resulted in a failure. For details see errorCode, errorMessage, debugCode and debugMessage.

isSuccess
Link copied to clipboard
fun isSuccess(): Boolean

`true` if the operation was successful. See value for the result.

value
Link copied to clipboard
fun value(): S

Result of a successful operation.