Heim > Artikel > Backend-Entwicklung > Wie kann ich in Go zuverlässig prüfen, ob eine Anfrage storniert wurde?
So prüfen Sie, ob eine Anfrage storniert wurde
In Go können Programmierer auf Situationen stoßen, in denen sie feststellen müssen, ob eine Anfrage storniert wurde. Die Verwendung des == context.Canceled-Vergleichs in Go 1.9 und früheren Versionen kann jedoch zu unerwarteten Ergebnissen führen.
Um genau zu prüfen, ob eine Anforderung abgebrochen wurde, sollten Sie die folgenden Ansätze in Betracht ziehen:
1. Nutzen Sie das context.Canceled-Fehlerobjekt:
In Go 1.13 und höher bietet das context.Canceled-Fehlerobjekt eine praktische Möglichkeit, den Abbruch zu überprüfen. Wenn ein Kontext abgebrochen wird, gibt jede darauf ausgeführte Operation diesen Fehler zurück. Der folgende Code demonstriert seine Verwendung:
// Create a context that is already canceled ctx, cancel := context.WithCancel(context.Background()) cancel() // Create the request with it and perform an operation r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil) _, err := http.DefaultClient.Do(r) // Check if the error matches context.Canceled if err == context.Canceled { // Request was canceled }
2. Verwenden Sie die Funktion „errors.Is“:
Wenn Sie Go-Versionen vor 1.13 unterstützen müssen, können Sie die Funktion „errors.Is“ verwenden, um nach verschachtelten context.Canceled-Fehlern zu suchen. Mit „errors.Is“ können Sie die zugrunde liegende Fehlerkette untersuchen und feststellen, ob einer der Fehler einem bestimmten Fehlertyp entspricht.
// Create a context that is already canceled ctx, cancel := context.WithCancel(context.Background()) cancel() // Create the request with it and perform an operation r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil) _, err := http.DefaultClient.Do(r) // Check if the error chain contains context.Canceled if errors.Is(err, context.Canceled) { // Request was canceled }
Das obige ist der detaillierte Inhalt vonWie kann ich in Go zuverlässig prüfen, ob eine Anfrage storniert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!