Error Handling - AWS SDK for C++

Error Handling

The AWS SDK for C++ does not use exceptions; however, you can use exceptions in your code. Every service client returns an outcome object that includes the result and an error code.

Example of handling error conditions

bool CreateTableAndWaitForItToBeActive() { CreateTableRequest createTableRequest; AttributeDefinition hashKey; hashKey.SetAttributeName(HASH_KEY_NAME); hashKey.SetAttributeType(ScalarAttributeType::S); createTableRequest.AddAttributeDefinitions(hashKey); KeySchemaElement hashKeySchemaElement; hashKeySchemaElement.WithAttributeName(HASH_KEY_NAME).WithKeyType(KeyType::HASH); createTableRequest.AddKeySchema(hashKeySchemaElement); ProvisionedThroughput provisionedThroughput; provisionedThroughput.SetReadCapacityUnits(readCap); provisionedThroughput.SetWriteCapacityUnits(writeCap); createTableRequest.WithProvisionedThroughput(provisionedThroughput); createTableRequest.WithTableName(tableName); CreateTableOutcome createTableOutcome = dynamoDbClient->CreateTable(createTableRequest); if (createTableOutcome.IsSuccess()) { DescribeTableRequest describeTableRequest; describeTableRequest.SetTableName(tableName); bool shouldContinue = true; DescribeTableOutcome outcome = dynamoDbClient->DescribeTable(describeTableRequest); while (shouldContinue) { if (outcome.GetResult().GetTable().GetTableStatus() == TableStatus::ACTIVE) { break; } else { std::this_thread::sleep_for(std::chrono::seconds(1)); } } return true; } else if(createTableOutcome.GetError().GetErrorType() == DynamoDBErrors::RESOURCE_IN_USE) { return true; } return false; }