Použití výjimek v C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Použití výjimek v C++ – C / C++ – Fórum – Programujte.comPoužití výjimek v C++ – C / C++ – Fórum – Programujte.com

 

Jonyzz0
Návštěvník
18. 2. 2008   #1
-
0
-

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 ???

Nahlásit jako SPAM
IP: 62.40.69.–
sn3d0
Věrný člen
19. 2. 2008   #2
-
0
-

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.. :)

Nahlásit jako SPAM
IP: 213.151.208.–
shutdown -h now
sn3d0
Věrný člen
19. 2. 2008   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 213.151.208.–
shutdown -h now
Jonyzz0
Návštěvník
19. 2. 2008   #4
-
0
-

To sn3d : Díky za odpověď, přesně tohle jsem potřeboval vědět . :smile2: Asi použiju tu kombinaci výjimek a assertu jak doporučuješ.

Nahlásit jako SPAM
IP: 62.40.69.–
Jura
~ Anonymní uživatel
637 příspěvků
19. 2. 2008   #5
-
0
-

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ů).

Nahlásit jako SPAM
IP: 85.207.192.–
sn3d0
Věrný člen
20. 2. 2008   #6
-
0
-

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

Nahlásit jako SPAM
IP: 213.151.208.–
shutdown -h now
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Podobná vlákna

Služba - logování vyjímek — založil hlucheucho

C# - pouziti += — založil aleskm

$_GLOBALS Pouziti — založil Petr

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý