Kalo te dokumentacioni
Java

Gabimet dhe riprovimet

Një klasë përjashtimi për çdo lloj refuzimi dhe riprovime që nuk mund të dërgojnë dy herë.

Trajtimi i një gabimi

Errors.java
try {    client.templates().send("order-shipped", Body.of(        "from", "[email protected]",        "to", "[email protected]",        "props", Body.of("orderId", "AC-4192")    ));} catch (ValidationException error) {    System.err.println(error.param() + " " + error.getMessage());} catch (RateLimitException error) {    System.err.println("Wait " + error.retryAfterSeconds() + " seconds");} catch (ApiException error) {    System.err.println(error.status() + " " + error.code() + " " + error.requestId());} catch (NetworkException error) {    System.err.println(error.isTimeout() ? "Timed out" : "No response");}

Një refuzim nga API-ja hedh një ApiException, ose nënklasën për tipin e tij, me atë që API-ja tha për të. Çdo përjashtim që hedh klienti është një OpenEmailException i pakontrolluar, kështu që një catch i vetëm i mbulon të gjitha.

MetodaÇfarë mban
status()Statusi HTTP, ose 0 kur nuk mbërriti asnjë përgjigje.
type(), code()Tipi i gabimit dhe kodi i API-së, si validation_error dhe invalid_parameter.
param()Fusha që e ka fajin, kur ka një të tillë.
requestId()Id-ja që duhet të citoni kur i shkruani mbështetjes.
docUrl()Faqja e dokumentimit që shpjegon kodin.
retryAfterSeconds()Sa ju kërkoi API-ja të prisni.
fields()Fushat që refuzoi një formular regjistrimi, secila me një key dhe një error.
body()Trupi i dekoduar i përgjigjes.

Llojet e dështimit

PërjashtimiKur hidhet
AuthenticationExceptionÇelësi ose tokeni u refuzua, me një 401.
PermissionExceptionKredenciali nuk lejohet ta bëjë këtë, me një 403.
NotFoundExceptionAsgjë nuk e ka atë id, me një 404.
ConflictExceptionNdryshimi bie ndesh me gjendjen aktuale, me një 409.
ValidationExceptionNjë fushë u refuzua, me një 422.
RateLimitExceptionShumë kërkesa, ose një kuotë është shpenzuar, me një 429.
InvalidRequestExceptionÇdo refuzim tjetër i kërkesës.
ApiExceptionAPI-ja dështoi, me një status 500 ose më të lartë.
NetworkExceptionNuk mbërriti asnjë përgjigje.
IllegalArgumentExceptionVetë thirrja ishte e gabuar, dhe asgjë nuk u dërgua.
WebhookSignatureExceptionNjë dorëzim webhook-u nuk e kaloi kontrollin e vet.

Një ApiException u përgjigjet edhe pyetjeve për veten: isValidation(), isNotFound(), isRateLimited(), isServerError() dhe isRetryable(), me isScopeMissing() kur kredencialit i mungon scope-i që i duhet thirrjes dhe isStepUpRequired() kur një token aksesi duhet të verifikojë më parë një kod. NetworkException.isTimeout() tregon se afati kaloi.

Çfarë riprovohet

  • Leximet, dërgimet dhe çdo shkrim që është i sigurt për t'u përsëritur riprovohen, deri në maxRetries herë. Çdo shkrim tjetër dërgohet një herë.
  • Statuset 408, 500, 502, 503 dhe 504 riprovohen me një pritje që nis nga gjysmë sekonde dhe dyfishohet deri në tetë sekonda.
  • Një 429 riprovohet vetëm kur mban një Retry-After prej një minute ose më pak, dhe klienti pret aq gjatë.
  • Një lidhje që dështon ose që e kalon afatin kohor riprovohet në të njëjtën mënyrë.

Një dërgim që riprovohet mban çdo herë të njëjtin çelës idempotence, kështu që API-ja e përsërit mesazhin e parë në vend që të dërgojë një të dytë.