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 diese ID dann entweder 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.
Nicht behandelte Ausnahmen führen zum Absturz Ihrer App.
In der folgenden Tabelle findest du die Bedeutungen von HomeException
-Codes, die dir möglicherweise begegnen:
Code | Bedeutung |
---|---|
ABORTED |
Der Vorgang wurde abgebrochen. Dieser Fehler tritt in der Regel auf, wenn ein Parallelitätsproblem vorliegt, z. B. ein fehlgeschlagener Sequencer-Check oder eine abgebrochene Transaktion. |
ALREADY_EXISTS |
Die Ressource oder Entität, die Sie erstellen möchten, ist bereits vorhanden. Dies 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 nicht für die Ausführung des Vorgangs geeignet ist. Diese Meldung wird beispielsweise angezeigt, wenn Sie stop für einen Ofen aufgerufen haben, der bereits ausgeschaltet ist. |
INTERNAL |
Interne Fehler. Das bedeutet, dass einige Invarianten, die vom zugrunde liegenden System erwartet werden, nicht erfüllt wurden. Dieser Fehlercode ist für schwerwiegende Fehler reserviert. |
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 du beim Aufrufen von
activateAudioTrack auf einem Mediaplayer-Gerät eine nicht vorhandene Titel-ID angibst. |
OUT_OF_RANGE |
Ein Parameter hat den gültigen Bereich überschritten, basierend auf dem aktuellen Systemstatus. Diese Meldung wird angezeigt, wenn der Wert zwar im Bereich der Werte liegt, die der API-Aufruf möglicherweise akzeptieren könnte, 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 vorkommen, wenn jemand
dispense auf einen Futterautomaten für Haustiere sendet 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 Zuhause auf Android-Geräten initialisieren. |
UNAUTHENTICATED |
Der Anrufer kann nicht identifiziert werden oder die Anfrage enthält keine gültigen Anmeldedaten. |
UNAVAILABLE |
Der Dienst ist nicht verfügbar. Dies ist höchstwahrscheinlich ein vorübergehender Zustand, der durch Wiederholen mit einem Backoff korrigiert werden kann. 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. |