Kalo te dokumentacioni
Python

Gabimet

Çdo dështim ngre një përjashtim. Dy klasa, dhe një id kërkese te çdo gabim i API-së.

Si ta kapni një

catch_errors.py
from openemail import OpenEmailApiError, OpenEmailNetworkError, openemail try:    openemail.emails.send({'from': sender, 'to': recipient, 'subject': subject, 'text': text})except OpenEmailApiError as error:    if error.is_validation:        print(error.code, error.param, error.message)     if error.is_permission:        print(openemail.addresses.list())     if error.is_rate_limited:        print('try again in', error.retry_after_seconds, 'seconds')     print(error.status, error.request_id)     raiseexcept OpenEmailNetworkError as error:    if error.is_timeout:        print('no answer in time')     raise

Një permission_error te një dërgim është zakonisht scope-i i dërgimit i ÇELËSIT, një domen ose një adresë që nuk iu dha, dhe jo hapësira e punës, prandaj shembulli shtyp atë që thotë addresses.list() se ky çelës mund të dërgojë.

Klasat

KlasaKur
OpenEmailApiErrorAPI-ja u përgjigj, dhe jo me sukses. Mban message, status, type, code, param, doc_url, request_id, retry_after_seconds, fields dhe body.
OpenEmailNetworkErrorNuk mbërriti asnjë përgjigje: DNS, TLS, një lidhje e këputur ose skadimi i afatit kohor. Mban cause, përjashtimin e httpx që qëndron poshtë, dhe is_timeout është True kur arsyeja ishte skadimi i afatit kohor.
OpenEmailErrorBaza e të dyjave, kështu që një except i vetëm kap çdo dështim që shkaktoi API-ja ose rrjeti. Edhe WebhookVerificationError, që e ngre verify_webhook_signature, trashëgon prej saj.
ValueErrorNgrihet para se të dërgohet asgjë: një çelës që mungon ose i keqformuar, një base_url i papërdorshëm, një kredencial që do të dërgohej me http të thjeshtë, një id bosh. Një http_client i gabuar, ose një trup që JSON nuk mund ta mbartë, ngre në vend të kësaj TypeError.

fields liston çdo përgjigje që refuzoi një formular regjistrimi, si key dhe error, dhe është None te çdo gabim tjetër. body ruan JSON-in që dërgoi API-ja, ose është None kur trupi nuk ishte JSON.

VetiaTrue kur
is_authtype është authentication_error, një 401: asnjë çelës, lloji i gabuar i kredencialit, ose një çelës që nuk e kemi lëshuar ne.
is_permissionpermission_error, një 403: një çelës i vërtetë pa scope-in ose pa adresën From që i duhet.
is_scope_missingcode është insufficient_scope, 403-shi që emërton një scope që mungon.
is_invalid_requestinvalid_request_error, një 400: një kërkesë që nuk mund të kuptohej. Një mesazh mbi tavanin e madhësisë kthehet si një 422 message_too_large, pra is_validation është vetia që e kap atë.
is_validationvalidation_error, një 422: skema e refuzoi, dhe param e emërton fushën.
is_not_foundnot_found_error, një 404: nuk ka burim të tillë.
is_conflictconflict_error, një 409: burimi ka kaluar pikën ku kjo mund t'i bëhej.
is_rate_limitedrate_limit_error, një 429. retry_after_seconds e mban pritjen kur serveri emërtoi një të tillë.
is_server_errorstatus është 500 ose më lart. Citoni request_id nëse kontaktoni mbështetjen.
is_retryablestatus është 408, 429, 500, 502, 503 ose 504.
is_step_up_requiredcode është step_up_required, 403-shi që merr një token qasjeje OAuth para një ndryshimi të ndjeshëm derisa personi të ketë verifikuar një kod.

Shumica e vetive lexojnë type, gjysmën e ngrirë të zarfit. code mbetet një str, sepse API-ja garanton se ai është i hapur dhe shtues, prandaj trajtojeni një që nuk e njihni si type-in e tij. Një Literal i mbyllur do ta bënte përmirësimin e SDK-së çmimin e leximit të një mënyre të re dështimi.

Një trup që nuk është zarfi i gabimit i API-së bëhet gjithsesi një OpenEmailApiError, me type të nxjerrë nga statusi dhe me code të caktuar si unrecognised_response. Edhe një sukses trupi i të cilit nuk është JSON ngre një të tillë.

Anulimi i një thirrjeje të AsyncOpenEmail nuk ngre asnjë OpenEmailError. Vetë anulimi përhapet më tej, qoftë kur ndodh gjatë kërkesës, qoftë gjatë pritjes para një riprovimi, dhe pas tij nuk riprovohet asgjë.

request_id

Çdo OpenEmailApiError mban id-në e kërkesës që dërgoi serveri, nga trupi i gabimit ose nga header-i x-request-id, dhe ajo është e vetmja gjë që e lidh dështimin tuaj me një rresht në log-un e serverit. Një sukses kthen vetëm trupin e analizuar, pra te një i tillë nuk ka id kërkese për të lexuar.

str(error) mbaron me statusin, kodin dhe id-në e kërkesës, kështu që një rresht log-u që printon përjashtimin i ruan të treja. Një OpenEmailApiError i mbijeton edhe pickling-ut me çdo fushë, kështu që një përjashtim i ngritur në një proces worker arrin i paprekur te procesi prind.