Rozhoduju se zda použiju v programu pro ošetření chyb výjimky. Nějakou dobu jsem zkoušel programovat v javě, kde se to výjimkama hemží a docela sem si na ně zvykl. Hlavně mě zajímá jak ovlivní výjimky rychlost programu (část kódu v bloku označeného try, prý běží díky nutnosti hlídat vyhození výjimky daleko pomaleji). Nebo mají dnešní nejnovější kompilátory takový stupeň optimalizce, že je použití výjimek možné bez velkého ovlivnění rychlosti ???
Fórum › C / C++
Použití výjimek v C++
![](img/forum_vlakno_help_vyreseno.png)
Hmm neviem sice co si predstavujes pod pojmom velke ovplivnenie rychlosti, ale ked pouzivas C++, k tomu virtualne funkcie tak sa o rychlost nemusis nejak starat(tym narazam na to ze virtualne funkcie su tiez rezia naviac no v dnesnej dobe asi zanedbatelna, ked sa zoberie aky prinos maju s pohladu navrhu). Ak si zvyknuty pouzivat vynimky tak ich v pohode podla mna pouzivaj. Zasady pouzivania vynimiek ti asi netreba hovorit ked ich dobre poznas z Javy. Jedna vec. Neviem ako je to pri Jave ale v C++ je dobrym zvykom kombinovat osetrenie chyb pomocou vynimiek a tiez pomocou assert-u.Chyby treba rozlisovat na programatorske a funkcne. Totizto ked ide o programatorsku chybu, pouzivaj assert. Ten nesposobuje stack unwinding a takyto tvrdy pad je castokrat lebsi(rychlejsie sa najde chyba). Programatorske chyby su chyby napriklad: Funkcia prijma argument mesiac, ten vieme ze je v rozsahu 1..12 cize ked chces osetrit vstupny argument voci inym hodnotam nepouzivaj vynimku ale radsje pouzi assert( (mesiac > 1) && (mesiace <= 12) ). Totizto assert je makro ktore sa pri zapnutom NDEBUG ignoruje a tym padom sa znizuje rezia o tie tvoje podmienky, plus dalsie veci ktore ulahcia haldanie chyby. Este upozornenie ze v asserte nepouzivaj funkcie, alebo nieco co sa ma vykonavat (napriklad ++i) pretoze pri vypnutom NDEBUG sa to samozrejme ignoruje..
P.S: mozno som sa vyjadril jak magor ale ved niekto dalsi ma urcite doplni-poopravy.. :)
No takze co sa tyka rychlosti budem sa odvolavat na literaturu(kedze nejak sa mi nechce experimentovat s tym). Pouzivanie vynimiek je rychlostne porovnatelne z navratovou hodnotou, cize na rychlost by to malo mat minimalny vpliv. Rychlost vsak moze utrpiet pri castom vyvolavani urcitej vynimky, popripade pri jej zachyteni. V tom pripade vsak ide o zle navrhnuty kod a vynimka ktora sa casto vyvolava(napriklad v cykle) a sposobuje tak ubytok rychlosti neznamena chybu a je na zvazenie jej vyvolanie. Co s toho vypliva. Vypliva s toho to ze ich mozete pouzivat podla uvazenia, preferujte ich, je to spravna cesta.. Tymto sa chcem odvolat na literaturu C++ Coding Standards: 101 Rules, Guidelines, and Best Practices zo serie C++ In Depth kontretne na rule 72.
To sn3d :
Zdravím,
mám trošku OT otázku ohledně těch knížek. Jsou ty knížky volně dostupné v elektronické podobě?
To Jonyzz :
Já jen upozorním, pokud nemáš dostatečne zkušenosti s vyjímkami v C++, tak si to raději někde nacvič, protože si tím ušetříš spoustu námahy. A pokud se tedy skutečně rozhodneš používat vyjímky, tak rada dopředu - ze všeho udělej objekty(kromě primitivních typů).
To Jura : No sadu C++ in depth mam v anglictine ako PDFka, nie vsak vsetky stoja za to. Su tam urcite knihy ktore popisuju ACE framework a ine, tie ma tak nezaujali. Inac tuto konretnu som nasile dokonca aj prelozenu za fakt par korun v zoner press a asi si ju kupim, kedze tlacena forma je tlacena a ta kniha sa mi fakt pacila a fakt mozem odporucat. Su tam niektore veci ktore uz clovek berie ako samozrejmost, ale su tam aj velmi dobre typy. Inac takyto typ knih by som odporucal pokrocilejsim zaciatocnikom(ktory zvladaju napisat triedu) omnoho viac ako nejake knihy typu Mistrovstvy v C++ alebo C++ za 24 hodin.
http://www.zonerpress.cz/pro-programatory/c-101-programovacich-technik?ItemIdx=10
Okrem toho ti este mozem poradit jeden free dokument ktory ma dost prekvapil. Ide o Pattern Design v OOP od p.Kravala. Je to free stiahnutelna kniha a mne sa osobne dost pacila.
viac info na www.objects.cz http://www.objects.cz/. Sposob ako si zaobstarat dokument je http://www.objects.cz/produkty/Produkty.html
;-) prijemne citanie
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Služba - logování vyjímek — založil hlucheucho
Ošetření vyjímek v rámci třídy — založil TopicMan
Správa pamětí u příkazu goto a u výjimek — založil Kowalsky95
C# - pouziti += — založil aleskm
$_GLOBALS Pouziti — založil Petr
Moderátoři diskuze