Kdyby\Translator – Překládání výjimek s parametry
- chikeet
- Člen | 160
Zdravím,
nedávno jsem začala na projektech používat Kdyby\Translator a překlady s parametry a narazila jsem na problém při překládání výjimek, se kterým si moc nevím rady. Když chci nechat probublat text výjimky až k uživateli, cestou ho někde přeložit a ještě tam přidat parametry, jako to provést?
- předávat si Translator jako závislost úplně všude? To mi nepřijde reálné.
- statický přístup k Translatoru? To se mi taky zrovna nelíbí.
- přidat nějak parametry té výjimce a překládat to až nakonec? To by vyžadovalo používat jen vlastní výjimky, které to umožňují.
- něco jiného?
Zajímalo by mě, jak to řešíte vy, protože mě zatím nenapadá žádné uspokojivé a funkční řešení a předávat uživateli nic neříkající informaci typu „Někde se něco pokazilo“ mi přijde škoda s možnostmi, které Kdyby\Translator díky parametrům nabízí.
- BigCharlie
- Člen | 283
Sice to tak úplně není odpověď na otázku, ale já (téměř) nikdy nepředávám uživateli chybovou zprávu, kterou bych přebíral z výjimky.
Buď mám nějaký konečný bod, kde se výjimka odchytává a tam definuji zprávu pro uživatele, nebo je to výjimka typu „nedostupná databáze“ kde raději vyhodím nějakou obecnou „500 Server error“ stránku.
To téměř znamená, že občas si pro sebe v nějakém místě vyhodím
text výjimky – obvykle z lenosti, že jde o nějaký okrajový případ,
ke kterému by nemělo docházet. V zásadě už by se mi asi vyplatila
nějaká MyLazyException
:-)
Používám hodně vlastní typy výjimek. Pa odchytávám:
- své typy – vím, co se pokazilo a můžu dát jasnou zprávu
- pro případ největšího neštěstí
\Exception
Ten druhý případ nenastává často. A když k němu dojde, obvykle se ukáže, že:
- jsem zapomněl odchytit výjimku, kterou bych odchytávat měl
- by se hodil vlastní typ výjimky
- spadnul server, databáze, kde mi to „nestojí za to“
Editoval BigCharlie (15. 6. 2015 14:47)
- Filip Procházka
- Moderator | 4668
Rozhodně používat vlastní typy výjimek a následně chytat nejpozději v presenteru a převádět na flashky/chyby formuláře a ty překládat.