Lokalizovat výjimky nebo ne?

judovana

Lokalizovat výjimky nebo ne?
« kdy: 09. 05. 2013, 07:20:02 »
Zdravim!

Tohle je takova anketa s "proc to", pripadne magickym "jak", zdali lokalizovat exceptions nebo ne.  Dotaz cilim na javu, ale na kolik vim tak rizeni vyjimek se prez "vyssi" jazyky zas tak nelisi.

Na jedne  strane si rikam "ne" vyjimka je interni stav programu, spis debugovaci vystup. A tudiz by mela byt vyhozena v defaultnim (pravdepodobne anglickem) jazyce aplikace. A lokalizovany by mel byt az vystup pro uzvatele. Casto se to ale nechce resit - do nejakeho mista programu muze doteci nekolik stejnych vyjimek ovsem s jinou pricinou, a najit v nich pak tu spravnou k lokalizaci muze byt pruda. Takze si rikam "ano" hned na zacatku vyjinku lokalizovat a na konci si z ni jen vytahnout messgae. Jenze to mi pak zase chodi (idealne retezene) vyjinmky treba ve farsi a  kdo to ma lustit :).
Mezi kroekm se mi zda posilat si nejake "id" vyjimky, ale to zase odsuzuju jako neudrzovatelne. Nekde nejaky junior to poplete, nebo se ji zapomene priradit vyznam a pak (po vzoru widli) jen vidim "nastala vyjinmka 12345" to jsem se toho (bez hlednai) dovedel...
Mozna zlatym milnikem by byla odpoved "zalezi jakto popoduje programovaci jazyk" - tak java to (nakolik vim) nepodporuje :). Takze forum rad :)


J.
« Poslední změna: 09. 05. 2013, 11:08:22 od Petr Krčmář »


MM lentilky

Re:Lokalizovat vyjimky nebo ne?
« Odpověď #1 kdy: 09. 05. 2013, 07:30:12 »
Mozna bych skusil rozdelit kod do jednotlivych  bodu / casti jako knizku nebo nejaky navod.
a davat mu nazvy jako cast 1.1, 1.2, cast 2.1, 2.2, 2.3

pak nemas ID ktere mas hledat. ale mas presnou   cast kodu kde se to nachazi.

Zkus to vsechno jenom appendovat do jednoho listu pokud ten program neni tak velky
a na konci si ho jen printni anebo vypis do txt.

Jakub Galgonek

Re:Lokalizovat vyjimky nebo ne?
« Odpověď #2 kdy: 09. 05. 2013, 07:37:20 »
Tohle je takova anketa s "proc to", pripadne magickym "jak", zdali lokalizovat exceptions nebo ne.

Třída Throwable, která je předkem všech výjimek, obsahuje metody getMessage() a getLocalizedMessage(). Stačí je tedy ve svých výjimkách vhodně definovat a pak jen správně používat.

Franta <xkucf03/>

Re:Lokalizovat vyjimky nebo ne?
« Odpověď #3 kdy: 09. 05. 2013, 07:55:49 »
Ideální mi přijde dát do výjimky její kód ve tvaru XXX-NNNN, kde XXX bude zkratka tvého programu a NNNN číslo chyby. Půjde to snadno vyhledávat na internetu v různých diskusích a poradnách, ve FAQ atd.

A k tomu přidat klíč pro lokalizaci + parametry. Např. "konfigurace.souborNenalezen" + parametr "/cesta/k/souboru". Z toho se vyrobí hezká lokalizovaná hláška pro zobrazení uživateli.

Ne všechny výjimky je potřeba lokalizovat – ale ty, které probublají až ke koncovému uživateli, bys měl. Ty, které zůstanou na serveru  nebo se zapíší jen do logu nebo ošetří uvnitř programu a zahodí, ty můžeš nechat bez lokalizace.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Lokalizovat vyjimky nebo ne?
« Odpověď #4 kdy: 09. 05. 2013, 09:24:16 »
My je nelokalizujeme. Důvod je ten, že pokud se uživateli vypíše nějaká hláška, která dle jeho názoru s provedenou akcí nesouvisí, tak Ti akorát sdělí, že "to vypsalo nějakou chybu". U každé akce sdělujeme uživateli obecnější hlášku šitou na míru dané akci a tu výjimku jako takovou buď zalogujeme nebo (je-li uživatel online) přes webovou službu pošleme k nám. Tím pádem je nepotřebné ty hlášky lokalizovat, bylo by to spíš na škodu; zkus si luštit nějakou hlášku v maďarštině.


judovana

Re:Lokalizovat vyjimky nebo ne?
« Odpověď #5 kdy: 09. 05. 2013, 10:21:02 »
getLocalisedMessage znam... no pracuje se s tim dost hrozne...

Add mm Lentlilky a franta - no to se zase dostaneme k ID vyjimky. Coz je rpesne to co bych nerad. Ano sice je pravda ze "se to da dohledat", ale na 99% je to zlo. U vyjimky potrebuju "kouknout a vedet". To zase diky bohu za javu (a podobne) kde vyjimky pridavaji jmena classa a metod cisla radku.

Mozna souhlasim aby id bylo soucasti textu, ale pak bych byl radsi za nejake autoamticky generovane id, neb jinak se to zase "slovnikovou metodou: nekde pokazi.

Tosku jste nakousli tema ktere s timhle hodne pronika - a to ktera cast vyjimnky probubla az k uzivately, ktera se nekde zachyti a zpracuje, a kltera se pouze zaloguje ( stim ze zaloguji se samozrejem i obe predchozi).
V idealnim svete bych mel v logu nelokalizovane vyjinky, u uzivatele lokalizovane (moznost ze je muze c&p a posalt nam je jako bug je samozrejma)
Kdyz bych ^^ resil rucne - tak to si ude fajn, ale casem se nejaka vyjimka muze rpenest od ine.. skupiny...a uz jsem zase tam ke na zacatku bud vlogu lokalizovana, nebo u uzivatele nelokalizovana...

Chjo :(

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Lokalizovat výjimky nebo ne?
« Odpověď #6 kdy: 09. 05. 2013, 12:42:12 »
moznost ze je muze c&p a posalt nam je jako bug je samozrejma

Ze zkušeností, pokud uživateli zobrazíš pouze text (message) výjimky, který Ti pošle, bude Ti takové hlášení celkem naprd, neb z něj nic nepoznáš. V mnoha případech se Ti totiž nepodaří tu chybu reprodukovat u sebe, ani kdyby Ti uživatel napsal přesný postup, kterým ji vyvolal. A to se nestane, s tím mají potíže i někteří testeři.

Pokud chceš, aby v textu, který Ti uživatel pošle, byly všechny možné údaje, které by Ti nějak mohli pomoct odhalit problémové místo, pak tam těch údajů bude fakt hodně. A většina uživatelů se dlouhého textu (byť srozumitelného a v jejich jazyce) lekne, hlášku odklepne a možná za týden Ti dá hlášení. Když na něj vyhodíš stack trace, tak jaká bude reakce? "Vypsalo mi to nějaký nesmysly" "Jaký, potřebuju ty nesmysly vidět" "Vám říkám, vole, že to byly totální nesmysly"

kuka

Re:Lokalizovat výjimky nebo ne?
« Odpověď #7 kdy: 09. 05. 2013, 13:29:21 »
Predevsim si ujasni, jak chces vyjimky pouzivat. Ja napriklad tvrdim, ze vyjimka se pokud mozno nikdy nema dostat k uzivateli a pokud se to stane, ten nikdy nema sam interpretovat jeji vyznam. Tzn. pak je lokalizace principialne nesmysl. Pokud ji chces uzivateli zobrazovat a ten ji ma interpretovat, pak ma o lokalizaci smysl uvazovat a mozne postupy se v zasade nijak nelisi od lokalizace cehokoliv jineho. Jediny realny scenar vidim v pripade tlustych klientu, kdy by se vyjimka ztratila (jinak je na serveru v logu) a pak davame okno typu "doslo k interni chybe, nahlaste spravci aplikace", kde muze byt napsano neco jako "do hlaseni zkopirujte toto" a uveden stacktrace (nebo cokoliv jineho). Pak ovsem opet nema zadny smysl to lokalizovat. A pak je jeste jeden pripad a to je lokalizace logovani, pak ma smysl uvazovat i o lokalizaci vyjimek kvuli umozneni interpretace logu - to je ovsem domena spis velkych systemu a dneska uz celkem passe, pokud se to rovnou udela v anglictine.

judovana

Re:Lokalizovat výjimky nebo ne?
« Odpověď #8 kdy: 09. 05. 2013, 13:36:19 »
moznost ze je muze c&p a posalt nam je jako bug je samozrejma
Ze zkušeností, pokud uživateli zobrazíš pouze text (message) výjimky, který Ti pošle, bude Ti takové hlášení celkem naprd, neb z něj nic nepoznáš. V mnoha případech se Ti totiž nepodaří tu chybu reprodukovat u sebe, ani kdyby Ti uživatel napsal přesný postup, kterým ji vyvolal. A to se nestane, s tím mají potíže i někteří testeři.

Souhlas. Nevyjadril jsem se uplne presne. Uzivateli se zobrazi smysluplnejsi cast vyyjimky, Kiknuti na vygenerovat cely report, pripadne automaticky bug report je to co si muze zobrazit, a to co me k necemu je.

Z toho trosku plyne odpovedna mou otazku - lokalizovat tu nejvididitelnejsi cast - potiz je ze to ma prunik s tou plnohodnotnou casti :(