Ana içeriğe geç

Hatalar

Connect-Kotlin, 16 hata kodu kullanır.
Bunlar daha bilinen "404 Bulunamadı" ve "500 İç Sunucu Hatası" HTTP durum kodlarına benzerdir.

Connect protokolü kapsamında, bir hata her zaman JSON formatında iletilir. Örneğin:

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
"code": "invalid_argument",
"message": "cümle boş olamaz"
}
bilgi

Connect-Kotlin, tüm desteklenen protokoller arasında hataları tutarlı bir şekilde temsil eden bir ortak ConnectException türü sağlar.

ResponseMessage tarafından döndürülen başarısızlık değerleri, bir cause içerir ve akış API'leri, responseChannel üzerinden okuma sırasında bir hata meydana gelirse bir ConnectException fırlatır:

val request = SayRequest(sentence = sentence)
val response = elizaClient.say(request)
response.failure {
print(it.cause.code) // Code.INVALID_ARGUMENT
print(it.cause.message) // "cümle boş olamaz"
print(it.cause.metadata) // Sunucu tarafından sağlanan ek başlıklar/trailerların sözlüğü
}

Hata ayrıntıları

Ekstra güçlü tipli hatalar sunucu tarafından yanıtlarda belirtilmiş olabilir.
Bunlar google.protobuf.Any tipinde sarılır ve ConnectException.unpackedDetails() fonksiyonu kullanılarak beklenen hata mesajı sınıf türü belirtilerek açılabilir:

val request = SayRequest(sentence = sentence)
val response = elizaClient.say(request)
response.failure {
val errorDetails = it.cause.unpackedDetails(ErrorDetail::class)
// ErrorDetail ile çalışın.
}

İptal

Oluşturulan yöntemlerin imzasında suspend anahtar kelimesi bulunur. Bu, Kotlin coroutine bağlamı iptal edildiğinde alttaki isteği iptal edecektir.

Geri çağırma tekil imzasıyla sonuç, kullanıcıya bir isteği manuel olarak iptal etme kontrolü vermek için bir iptal oluşturucudur:

val request = sayRequest { sentence = sentence }
val cancel = elizaServiceClient.say(request) { response ->
print(response.code) // Code.CANCELED.
}
cancel()