Spracovanie chýb
Každá chyba z Frontmail SDK je inštanciou FrontmailError (alebo jej podtriedy) a má:
| Vlastnosť | Význam |
|---|---|
code |
Stabilný identifikátor, napr. invalid_template_params – pozrite Kódy chýb |
status |
HTTP status alebo 0 pri chybách na strane klienta |
message |
Anglický popis určený vývojárom |
docsUrl |
Odkaz na vysvetlenie daného kódu |
details |
Doplňujúce údaje – pri invalid_template_params zoznam issues |
retryAfter |
Počet sekúnd pri chybách rate limitu |
Podtriedy
Section titled “Podtriedy”| Trieda | Kedy |
|---|---|
ValidationError |
400 / 422 – neplatné telo alebo parametre (details.issues) |
AuthError |
401 a 403 pre forbidden, origin_not_allowed, private_key_required |
InsufficientCreditsError |
402 – len v režime reject |
RateLimitError |
429 po vyčerpaní všetkých opakovaní |
BlockedError |
Zablokované v prehliadači pomocou blockHeadless, blockList alebo limitRate |
NetworkError |
Žiadna HTTP odpoveď: offline, DNS, CORS, timeout (po všetkých opakovaniach) |
FrontmailError |
Všetko ostatné (napr. captcha_failed, recipient_suppressed, 5xx) |
Príklad
Section titled “Príklad”import { send, FrontmailError, ValidationError, NetworkError, BlockedError } from '@frontmail/browser';
try { const { status } = await send('svc_01J9…', 'tpl_contact', params); showSuccess(status === 'held' ? 'Prijaté – čoskoro ju doručíme.' : 'Ďakujeme!');} catch (err) { if (err instanceof ValidationError) { for (const issue of err.details?.issues ?? []) showFieldError(issue.param, issue.message); } else if (err instanceof NetworkError) { showError('Zdá sa, že ste offline. Skúste to, prosím, znova.'); } else if (err instanceof BlockedError) { showError('Pred ďalším odoslaním chvíľu počkajte.'); } else if (err instanceof FrontmailError && err.code === 'captcha_failed') { resetTurnstile(); showError('Potvrďte, prosím, že nie ste robot.'); } else { showError('Ospravedlňujeme sa, správu sa nepodarilo odoslať.'); console.error(err); // obsahuje code a docsUrl }}Čo ukázať používateľom
Section titled “Čo ukázať používateľom”heldnie je chyba – zobrazte bežné potvrdenie.- Chyby validácie: ukážte ich pri príslušných poliach (
issue.param), ideálne s vlastným preloženým textom podľaissue.code. - Všetko ostatné: všeobecná správa.
messagekoncovým používateľom neukazujte doslova – je písaná pre vývojárov. - Logujte
code,statusa prípadne ID správy – výrazne urýchlia riešenie s podporou.
Pomocníky pre React, React Native, Vue a Svelte zo send() nikdy nevyhadzujú chybu; namiesto toho
ju uložia do svojho stavu error.