No ale, jestli se nepletu,v logovani mam obvykle typy: trace, debug,
info, error. Viz http://www.slf4j.org/api/org/slf4j/Logger.html
Asserty jsou typu error podle meho pocitu, tedy se vyhodnocuji vzdy, a
tudiz nepouzitelne.
Jedine, co me napada je zalozit si typ assert do logovani...
PP
On 04/03/2011 01:13 PM, Ondra Medek wrote:
No vzhledem k tomu, ze "By default, assertions are disabled at
runtime.", tak bych rekl, ze ten Java "assert" slouzi spise pro
debugovani a testovani. Vsude, kde chceme mit kontroly i na produkci,
tak musime pouzit vlastni kod if ... throw. Tedy IMHO assert muze
obsahovat i narocny kod (prochazeni pole, alokace pameti).
Podole mne bylo asi zamyslene pouziti "assert" takove, za na produkci
jsou vyple. Kdyz se treba narazi na divny problem, tak se muze spustit
aplikace s -ea a treba assert zafunguje a problem odhali. Ale
java.logging a podobne resi stejnou vec elegatneji.
Je vubec nejaky znamy open source Java projekt, ktery by "assert" pouzival?
2011/4/1 "Zdeněk Troníček"<[email protected]>:
Nejde ani tak o viditelnost metody, ale o to, zda je metoda součástí API.
Klíčové slovo assert kontroluje podmínku, o které je programátor
přesvědčen, že platí. Motivací pro používání assert je snaha dozvědět se
co nejdříve o tom, že je něco špatně. Použití má smysl tam, kde sám píšu
metodu i volání (nebo já píšu metodu a kolega z týmu volání).
Naproti tomu výjimka IllegalArgumentException slouží k informování
volájícího, že zavolal metodu s nesprávnými argumenty. Hodí se tam, kde
jde o metodu API, které bude přístupné někomu z vnějšku (tj. mimo systém).
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Ondra Medek napsal(a):
Aserce kontroluji, zda modul dostava spravne vstupy a jeho stav je
korektni. Je to takova velmi omezena varianta Design by Contract.
Nemely by se pouzivat na overovani vstupu od uzivatele, jen na obranu
pred programatorskymi chybami.
Typicke pouziti:
Scitac je napsan jen pro nezaporna cisla. To je popsano v dokumentaci.
Na jeho zacatku se assertem overi, ze cisla skutecne nejsou zaporna.
Pokud by ho nejaky programator pouzil spatne, brzy se to dozvi.
(Otazkou je, zda trebas tady radeji nepouzit InvalidArgumentException,
hranice je neostra.)
Java assert se nema pouzivat na kontrolu parametru public metod, viz
http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#usage-conditions
Asi protoze ten assert se ma na produkci vypinat.
Misto toho treba Spring ma Assert tridu:
http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/util/Assert.html
(A ja si taky kdysi jednu vyrobil:
http://xmedeko.blogspot.com/2010/12/java-simple-assert-class-for-design-by.html)
--
Petr Prikryl
-----------------------
[email protected]
[email protected]
www.admin24.cz