Fehlerbehandlung

Kotlin unterstützt keine geprüften Ausnahmen. Dies vereinfacht und optimiert die Fehlerbehandlung, da Sie nur die Ausnahmen behandeln können, die potenziell wiederhergestellt werden können. Da Sie nicht jede mögliche Ausnahme explizit behandeln müssen, ist Ihr Code weniger überladen und bleibt daher stärker auf seinen Hauptzweck ausgerichtet.

Wiederherstellbare Fehler sind Probleme, die ein Entwickler von seiner Seite aus beheben kann. Wenn beispielsweise eine in einem Aufruf verwendete ID ungültig ist, wirft die API eine HomeException mit einer invalid data-Nachricht aus. Der App-Entwickler kann dann entweder diese ID aus seinem Cache entfernen oder dem Nutzer eine Meldung wie „Gebäude nicht gefunden“ anzeigen.

Beispiel für den Umgang mit einem wiederherstellbaren Fehler:

val result =
   try {
     homeManager.requestPermissions()
   } catch (e: HomeException) {
     PermissionsResult(
       PermissionsResultStatus.ERROR,
       "Got HomeException with error: ${e.message}",
     )
   }

Bei jeder Methode in den Home APIs kann eine HomeException geworfen werden. Wir empfehlen daher, einen try-catch-Block zu verwenden, um HomeException bei allen Aufrufen zu fangen.

Prüfen Sie bei der Verarbeitung von HomeException die Felder code und message, um herauszufinden, was schiefgelaufen ist.

Alle nicht behandelten Ausnahmen führen zum Absturz Ihrer App.

In der folgenden Tabelle finden Sie die Bedeutungen von HomeException-Codes, die Ihnen möglicherweise begegnen:

Tabelle: HomeException codes
Code Bedeutung
ABORTED Der Vorgang wurde abgebrochen. Dieser Fehler tritt in der Regel bei einem Parallelisierungsproblem auf, z. B. bei einem Fehler bei der Sequenzprüfung oder einem Transaktionsabbruch.
ALREADY_EXISTS Die Ressource oder Entität, die Sie erstellen möchten, ist bereits vorhanden. Das kann beispielsweise ein benanntes Programm für einen Thermostat sein.
API_NOT_CONNECTED Der Client hat versucht, eine Methode aus einer API aufzurufen, die keine Verbindung herstellen konnte. Das kann passieren, wenn das Gerät offline ist oder die API, die Sie aufrufen möchten, nicht unterstützt.
CANCELLED Der Vorgang wurde abgebrochen, üblicherweise vom Aufrufer.
DATA_LOSS Dauerhafter Datenverlust oder Datenkorruption.
DEADLINE_EXCEEDED Die Frist ist abgelaufen, bevor der Vorgang abgeschlossen werden konnte. Bei Vorgängen, die den Systemstatus verändern, kann dieser Fehler angezeigt werden, auch wenn der Vorgang erfolgreich abgeschlossen wurde.
FAILED_PRECONDITION Der Vorgang wurde abgelehnt, weil der Systemzustand die Ausführung des Vorgangs nicht zulässt. Diese Meldung wird beispielsweise angezeigt, wenn Sie stop auf einem Ofen gedrückt haben, der bereits ausgeschaltet ist.
INTERNAL Interne Fehler. Das bedeutet, dass einige Invarianten, die vom zugrunde liegenden System erwartet werden, verletzt wurden. Dieser Fehlercode ist schwerwiegenden Fehlern vorbehalten.
INVALID_ARGUMENT Sie haben ein Argument angegeben, das außerhalb des erwarteten Wertebereichs liegt.
NOT_FOUND Sie haben eine Entität oder Ressource angegeben, die nicht gefunden werden kann. Beispiel: Wenn beim Aufrufen von activateAudioTrack auf einem Mediaplayer-Gerät eine nicht vorhandene Titel-ID angegeben wird.
OUT_OF_RANGE Ein Parameter hat den gültigen Bereich basierend auf dem aktuellen Systemstatus überschritten. Diese Meldung wird angezeigt, wenn der Wert zwar im Bereich der Werte liegt, die der API-Aufruf möglicherweise akzeptieren könnte, er aber im vorliegenden Kontext keinen Sinn ergibt.
PERMISSION_DENIED Sie sind nicht berechtigt, den angegebenen Vorgang auszuführen. Dieser Fehlercode bedeutet nicht, dass die Anfrage ansonsten gültig ist.
RESOURCE_EXHAUSTED Eine Ressource ist aufgebraucht. Dies kann beispielsweise geschehen, wenn jemand dispense auf einem Futterautomaten anruft und kein Futter mehr im Gerät vorhanden ist.
SDK_INITIALIZATION_MISSING_INFO Das SDK wurde nicht vollständig initialisiert. Diese Meldung wird beispielsweise angezeigt, wenn Sie versuchen, eine TraitFactory für ein Merkmal abzurufen, das nicht registriert wurde. Weitere Informationen finden Sie unter Initialisierung.
UNAUTHENTICATED Der Anrufer kann nicht identifiziert werden oder die Anfrage enthält keine gültigen Anmeldedaten für die Authentifizierung.
UNAVAILABLE Der Dienst ist nicht verfügbar. Dies ist höchstwahrscheinlich ein vorübergehender Zustand, der durch Wiederholen mit einem Backoff korrigiert werden kann. Hinweis: Es ist nicht immer sicher, nicht-idempotente Vorgänge zu wiederholen.
UNIMPLEMENTED Der angeforderte Vorgang ist in diesem Dienst nicht implementiert, wird nicht unterstützt oder ist nicht aktiviert.
UNKNOWN Unbekannter Fehler. UNKNOWN wird in der Regel angezeigt, wenn eine Fehlerbedingung auftritt, die mit keinem der anderen Fehlercodes klassifiziert werden kann. Dieser Fehler wird beispielsweise zurückgegeben, wenn ein Statuswert von einer externen API empfangen wird, der nicht genügend Informationen zur Ursache enthält.