Hatalar
Connect-Swift, 16 hata kodu
setini kullanır. Bunlar, muhtemelen aşina olduğunuz "404 Bulunamadı" ve "500 İç Sunucu Hatası" HTTP durum kodlarına benzer.
Connect protokolünde
, bir hata her zaman JSON biçiminde temsil edilir. Örneğin:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"code": "invalid_argument",
"message": "cümle boş olamaz"
}
Connect-Swift, tüm desteklenen protokoller arasında hataları tutarlı bir şekilde temsil eden bir ortak ConnectError
türü sağlar.
Tekil API çağrıları tarafından döndürülen ResponseMessage
değerleri isteğe bağlı bir ConnectError?
içerir ve akış API'ları tarafından döndürülen StreamResult
değerleri de bu türü içerebilir:
let request = SayRequest.with { $0.sentence = sentence }
let response = await elizaClient.say(request: request)
if let error = response.error {
print(error.code) // Code.invalidArgument
print(error.message) // "cümle boş olamaz"
print(error.metadata) // Ek sunucu-provide edilen başlıklar/trailer ile ilgili sözlük
}
Hata detayları
Ek olarak, güçlü biçimlendirilmiş hatalar server tarafından yanıtlar içinde belirtilmiş olabilir
. Bunlar, kablolu durumda google.protobuf.Any
türüyle sarılır ve beklenen hata mesajı türünü (Eliza_V1_ChatError
bu örnekte) belirterek ConnectError.unpackedDetails()
fonksiyonu kullanılarak ayrıştırılabilir:
let request = SayRequest.with { $0.sentence = sentence }
let response = await elizaClient.say(request: request)
if let chatErrors: [Eliza_V1_ChatError] = response.error?.unpackedDetails() {
// Özel hataları işleyin
}
İptal
Bir giden isteği iptal etmek (yani, bir async Task
'ı iptal ederek veya bir geri çağırma tabanlı istek üzerinde cancel()
çağrısı yaparak) canceled
hata kodunu içeren bir yanıt almanızı sağlar.
let request = SayRequest.with { $0.sentence = sentence }
let cancelable = elizaClient.say(request: request) { response in
print(response.code) // Code.canceled
}
cancelable.cancel()