Swift bietet integrierte Unterstützung für das Auslösen und Abfangen wiederherstellbarer Fehler zur Laufzeit. Wenn beispielsweise ein Vorgang in Ihrem Code fehlschlägt oder ungültig ist, löst die API einen HomeError-Fehler aus. Dadurch wird die Fehlerbehebung vereinfacht und optimiert, da Sie sich nur auf wiederherstellbare Fehler konzentrieren können. Sie können dann Optionen anbieten, z. B. dem Nutzer die Möglichkeit geben, es noch einmal zu versuchen, oder eine Meldung wie „Struktur nicht gefunden“ anzeigen. Da Sie nicht jede mögliche Ausnahme explizit behandeln müssen, ist Ihr Code übersichtlicher und konzentriert sich auf seinen Hauptzweck.
Beispiel für die Behandlung eines wiederherstellbaren Fehlers:
let light1 = lightDevices.first
if let light = light1 {
do {
try await structure.move(device: light, to: room)
} catch let error as HomeError {
// Code for handling the exception
}
In der folgenden Tabelle finden Sie die Bedeutungen der
HomeError-Codes, die Sie
treffen können:
| Code | Bedeutung |
|---|---|
aborted |
Der Vorgang wurde abgebrochen. Dieser Fehler tritt in der Regel auf, wenn ein Parallelitätsproblem vorliegt, z. B. eine fehlgeschlagene Sequenzprüfung oder ein abgebrochener Vorgang. |
alreadyExists |
Die Ressource oder Entität, die Sie erstellen möchten, ist bereits vorhanden. Das kann beispielsweise ein benannter Zeitplan für ein Thermostat sein. |
cancelled |
Der Vorgang wurde abgebrochen, in der Regel vom Aufrufer. |
dataLoss |
Dauerhafter Datenverlust oder Datenkorruption. |
deadlineExceeded |
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. Zum Beispiel könnte eine erfolgreiche Antwort von einem Server so lange verzögert worden sein, dass die Frist abgelaufen ist. |
failedPrecondition |
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 aufrufen, der bereits angehalten wurde. |
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. |
invalidArgument |
Der Client hat ein ungültiges Argument angegeben. Dieser Fehler unterscheidet sich von `failedPrecondition`. `invalidArgument` gibt Argumente an, die ungeachtet des Systemstatus problematisch sind (z. B. ein ungültiger Dateiname). |
notFound |
Sie haben eine Entität oder Ressource angegeben, die nicht gefunden werden kann. Beispiel: Wenn Sie beim Aufrufen von
play auf einem Media-Player-Gerät eine nicht vorhandene Titel-ID angeben. |
outOfRange |
Ein Parameter hat den gültigen Bereich überschritten, basierend auf dem aktuellen System status. Diese Meldung wird angezeigt, wenn der Wert innerhalb des Wertebereichs liegt, den der API-Aufruf potenziell akzeptieren könnte, aber im aktuellen Kontext nicht sinnvoll ist. |
permissionDenied |
Sie sind nicht berechtigt, den angegebenen Vorgang auszuführen. Dieser Fehlercode sollte nicht so interpretiert werden, dass die Anfrage ansonsten gültig ist. |
resourceExhausted |
Eine Ressource ist aufgebraucht.
Dieser Fehler kann beispielsweise ausgelöst werden, wenn `dispense(item:amount:unit:presetName:)`
auf einem Gerät für die Futterausgabe für Haustiere aufgerufen wird und kein Futter mehr vorhanden ist.dispense(item:amount:unit:presetName:)Das kann auch daran liegen, dass ein Projektkontingent für Home APIs überschritten wurde. Weitere Informationen finden Sie unter Kontingente verwalten. |
unauthenticated |
Der Aufrufer kann nicht identifiziert werden oder die Anfrage enthält keine gültigen Authentifizierungsdaten. |
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. Im Allgemeinen tritt unknown auf,
wenn ein Fehlerzustand auftritt, der mit keinem der anderen Fehlercodes klassifiziert werden kann. Dieser Fehler kann beispielsweise zurückgegeben werden, wenn ein
Statuswert von einer externen API empfangen wird, die nicht genügend
Informationen zur Ursache enthält. |