Preskočiť na obsah

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
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)
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
}
}
  • held nie 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ľa issue.code.
  • Všetko ostatné: všeobecná správa. message koncovým používateľom neukazujte doslova – je písaná pre vývojárov.
  • Logujte code, status a 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.