# Fehlerbehandlung & Observability (https://dev.cosmospay.lat/docs/de/sdk/server/errors-observability/)

> Die Fehlerklassen, die das SDK wirft, sein Wiederholungsverhalten und die Telemetrie-Ereignisse, an die Sie sich anhängen können.

Alles, was das SDK werfen kann, ist ein typisierter Fehler, den Sie abfangen können, und jeder Netzwerkaufruf gibt Telemetrie aus, die Sie beobachten können.

## Fehler

```ts
import { CosmosPayAPIError, CosmosPayRequestError } from '@cosmosapp/pay_sdk';

try {
  await client.paymentIntents.fetch('missing');
} catch (err) {
  if (err instanceof CosmosPayAPIError) {
    // server responded with an error status
    console.error(err.status, err.code, err.body); // e.g. 404
  } else if (err instanceof CosmosPayRequestError) {
    // no usable response (network / TLS / timeout / offline)
    console.error('Network/timeout:', err.cause);
  } else {
    throw err;
  }
}
```

- `CosmosPayAPIError`: Die API hat mit 4xx/5xx geantwortet. Felder: `status`, `code`, `body`.
- `CosmosPayRequestError`: Die Anfrage wurde nie abgeschlossen. Feld: `cause`.
- Der Web-Client ergänzt: `CosmosPayWebError`, `WalletNotFoundError`, `WalletError`
  (vom Nutzer abgelehnt / gesperrt), `StellarSdkRequiredError`, `IntentError`. Die API-
  Fehlerklassen werden auch von `/web` re-exportiert, sodass `catch` über alle Einstiegspunkte hinweg funktioniert.
- Webhook-Signaturfehler werfen `WebhookSignatureError`.

### Wiederholungen

Vorübergehende Fehler (Netzwerkfehler, `408`, `429`, `5xx`) werden automatisch
wiederholt (standardmäßig **2** Wiederholungen, unter Beachtung von `Retry-After`). Anpassbar über
`new Client({ retries, timeout })`.

## Observability

Der Client gibt REST-Telemetrie erneut aus:

```ts
client.on('request',     ({ method, url, attempt }) => {});
client.on('response',    ({ method, url, status, attempt }) => {});
client.on('rateLimited', ({ method, url, attempt }) => {});
client.on('debug',       (message) => {});
```

Binden Sie diese in Ihren Logger/APM ein, um jede Anfrage zu verfolgen oder zu messen.

## Referenzen

- [REST](https://dev.cosmospay.lat/docs/sdk/definitions/server/rest/): Die HTTP-Schicht
- [Client](https://dev.cosmospay.lat/docs/sdk/definitions/server/client/): Der Haupteinstiegspunkt des SDK. Ein einzelner, atomarer Client, der jede Ressource über ihren eigenen Manager bereitstellt (ein atomares Single-Client-Design).
- [WebhookSignatureError](https://dev.cosmospay.lat/docs/sdk/definitions/server/webhook-signature-error/): Wird geworfen, wenn eine Webhook-Signatur die Verifizierung nicht besteht.
- [CosmosPayWebError](https://dev.cosmospay.lat/docs/sdk/definitions/web/cosmos-pay-web-error/): Basisklasse für jeden Fehler, der von `@cosmosapp/pay_sdk/web` geworfen wird.
- [WalletNotFoundError](https://dev.cosmospay.lat/docs/sdk/definitions/web/wallet-not-found-error/): In der aktuellen Umgebung konnte kein kompatibles Stellar-Wallet erkannt werden.
- [WalletError](https://dev.cosmospay.lat/docs/sdk/definitions/web/wallet-error/): Ein Wallet wurde gefunden, aber die Operation schlug fehl (vom Nutzer abgelehnt, gesperrt usw.).
- [StellarSdkRequiredError](https://dev.cosmospay.lat/docs/sdk/definitions/web/stellar-sdk-required-error/): Das Erstellen einer `pay`-Transaktion (oder das Übermitteln an Horizon) erfordert das Stellar-SDK, das eine optionale Peer-Abhängigkeit ist
- [IntentError](https://dev.cosmospay.lat/docs/sdk/definitions/web/intent-error/): Die Absicht / SEP-7-Anfrage konnte nicht interpretiert werden oder es fehlen Daten.
