Kdyby\Translator – Překládání výjimek s parametry

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chikeet
Člen | 160
+
+1
-

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
+
+5
-

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
+
+2
-

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.