### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Calling `describeTimeToLive` to a non-existent table returns a result rather than throwing resource not found.

Test case pseudo-code:
```
try {
  dynamo.describeTimeToLive(new DescribeTimeToLiveRequest()
         .withTableName("non-existent-table"));
  fail();
} catch (ResourceNotFoundException ex) {
  // Pass
}
```

### Expected Behavior

Expecting call to throw 

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    TestContainers from Java

### Environment

```markdown
- OS: MacOS
- LocalStack: 2.2.0
```


### Anything else?

_No response_
from localstack.services.edge import ROUTER
from localstack.services.plugins import ServiceLifecycleHook
from localstack.state import AssetDirectory, StateVisitor
from localstack.utils.aws import arns, aws_stack
from localstack.utils.aws.arns import extract_account_id_from_arn, extract_region_from_arn
from localstack.utils.aws.aws_stack import get_valid_regions_for_service
from localstack.utils.collections import select_attributes, select_from_typed_dict
from localstack.utils.common import short_uid, to_bytes
from localstack.utils.json import BytesEncoder, canonical_json
from localstack.utils.strings import long_uid, to_str
from localstack.utils.threads import start_worker_thread
LOG = logging.getLogger(__name__)
ACTION_PREFIX = "DynamoDB_20120810."
READ_THROTTLED_ACTIONS = [
    "GetItem",
    "Query",
    "Scan",
    "TransactGetItems",
    "BatchGetItem",
]
WRITE_THROTTLED_ACTIONS = [
    "PutItem",
    "BatchWriteItem",
    "UpdateItem",
    "DeleteItem",
    "TransactWriteItems",
]
THROTTLED_ACTIONS = READ_THROTTLED_ACTIONS + WRITE_THROTTLED_ACTIONS
MANAGED_KMS_KEYS = {}
def dynamodb_table_exists(table_name, client=None):