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
>

Odpovedet emailem