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:
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. |