Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Java
Assertion Facility
java
6. března 2002, 00.00 | Nově v Javě 2 verze 1.4 Standart Edition se objevuje klíčové slovo assert. Co znamená a k čemu se používá se podíváme právě v tomto článku.
Nově v Javě 2 verze 1.4 Standart Edition se objevuje klíčové slovo assert. Co znamená a k čemu se používá se podíváme právě v tomto článku.
Assertion Facility se uvádí jako pomůcka při programování. Přesněji řečeno při ladění programů. assert vcelku úzce souvisí s výjimkami, kterým jsme se věnovali v předešlých článcích. Možná by se dalo říci, že to vlastně výjimka je. I když taková velmi zvláštní, alespoň co se zápisu týče.
Ale co se týká účelu, tak ten je zhola stejný jako výjimka. Při záporném spuštění aserce se ukončí program (stejně jako u výjimky). A vypíše se AssertionError, případně i text pokud jste ho uvedli.
Mluvil-li jsem zde, že je to vlastní výjimka nebyl jsem daleko od pravdy. Která taková, že se při spuštění aserce se nejdříve vyhodnotí vámi zadaná výjimka. Pokud je false, tak se vyhodí výjimka AssertionError (podtřída třídy Error). Takže je to jak výjimka, tak zároveň podmínka.
Zápis assertionPodívejme se konečně na to, jak zapisovat assertion. Obecně lze říci, že je lze zapisovat dvěmi následujícími způsoby:
|
V podmínce můžete například hledat nepřijatelnou hodnotu např. null. Assertion se provede pouze vyhodnotí-li se podmínka jako false. V nepovinném textu můžete napsat text, který chcete aby se vypisoval. Prakticky to může vypadat takto:
|
Resp. s textem takto:
|
Z příkladu by mělo být zřejmé, že podmínka musí být typu boolean. Což samozřejmě znamená, že zde nemusí být jen podmínka, ale také např. návratová hodnota nějaké metody.
Pro názorné pochopení bych mohl napsat, jak asi vypadá interpretovaný kód tohoto zápisu. Tím myslím pouze fakt, že většina příkazů, ať již v kterémkoliv jazyce se obvykle dá přepsat do nižší úrovně, dokud nedojdete až k assembleru. Takže vezmeme-li klíčové slovo assert, pak to neznamená nic jiného než zhruba toto:
|
Z vlastnosti, že se vyhodí assertion plyne jedna zřejmá vlastnost. To je možnost zachycení výjimky AssertionError pomocí bloku try catch, kterému jsme se věnovali v druhém článku seriálu. Takže paradoxně lze ošetřit výjimku asi zcela odlišným způsobem než zamýšleli její tvůrci.
|
Z toho je asi názorně vidět, že ve vlastních metodách či třídách nemusíme mít deklarovány vlastní výjimky, ale často si vystačíme s tomto. Beru-li v úvahu takovou výjimku, která slouží pouze k interním účelům, tedy nepředává se nadřazené metodě apod.
Ještě lepším než jen zachycením s pozdějším ukončením programu je výjimku zpracovat o trochu jinak. Program pak není ukončen a běží dál pouze vypisuje chybová kódy o assertion. Otázkou je zda je to vhodné v daném případě.
|
Tak a to je pro dnešek vše. Příště si dokončíme Assertion Facility, což znamená podíváme se kompilaci a spuštění, zpětnou kompatibilitu s verzí 1.3. Mimo to se také podíváme na podmíněný překlad v Javě, který bude potřebovat.
Zde zmíněné příklady si můžete stáhnout v souboru assert.zip (3 kB).
Obsah seriálu (více o seriálu):
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007