Asi Ti moc nerozumím. To myslíš tak, že budeš na produkci testovat, zda nevoláš metodu se špatnými parametry a pokud ano, tak vyhodíš výjimku? To mi připadá na stejné úrovni jako chytání ArrayIndexOutOfBoundsException pro případ, že bychom použili neplatný index pro přístup k poli. Ne že by to nešlo, ale výjimky slouží primárně k ošetření neočekávaných (výjimečných) událostí a ne k detekci či řešení chyb programátora.
Jinak assert je dost vidět ve zdrojácích NetBeans. Z. -- Zdenek Tronicek FIT CTU in Prague Ondra Medek napsal(a): > 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) >>> >> >> > > > > -- > Ondra Medek >
