Smazat příspěvek

 Chystáte se smazat zprávu (se všemi případnými odpověďmi) z kategorie Hlavní diskuze:


22.09.2016 (21:33:16)
mirekP:
Prosim o radu a nasmerovanie aj v C++
Ako riesit problem s vyhadzovanim vynimiek? Mam funkciu ktora robi vypocet ale je v nej riziko ze bude robit delenie nulou. Kde mam spravit osetrenie proti deleniu nulou?
A) Mam to spravit vo funkcii tak ze funkcia vrati vysledok 0? – ako rozpoznam kedy ta 0 je vysledok alebo ERROR funkcie?
B) Ak spravim throw() v tej funkcii, ako bude vediet dalsi programator ktory bude chciet pouzivat tuto funkciu, ze ma volanie funkcie obalit do try-catch? Zaroven ako bude vediet ze ake vynimky hadze dana funkcia?

V jazyku Jave pod Eclipse IDE o tom informuje a je to pomerne trivialne. Avsak v C++ pod MS Visual Studiom neviem ako na to.

Dakujem
Priklad funkcie ktoru by som rad osetril
Int vypocetOdpracovanychDni()
{
return someMagicNumber/someMagicNumber2;
}
22.09.2016 (21:38:06)
mirekP:
Este dodam ze mi ide aj o to aby ten kod bol lahko znovupouzitelny, aby ked niekto potrebuje zavolat takuto funckiu vedel lahko ako ju ma pouzit.
A prave neviem to ako mam explicitne vyjadrit to ze „toto sa stane ak dojde k deleniu nulou“

Dakujem
22.09.2016 (21:49:17)
Goheeca (web) :
C++ nehazi vyjimku pri deleni nulou, takze to musis checkovat sam a pak to vyhodit a tady mas ukazku: http://stackoverflow.com/a/6121690
22.09.2016 (21:56:54)
8-bit obalka (web) :
Do catch/throw by se mělo obalit volání té funkce. Pokud to vecpeš dovnitř, podle mě si tím vůbec nijak nepomůžeš. Každopádně v takhle jednoduchých případech bych ten bordel vůbec nepoužíval a prostě to napsal postaru:
Int vypocetOdpracovanychDni() { if(!Number2) return -1; // chyba zadani ... ... return Number/Number2; } ... if((x = vypocetOdpracovanychDni()) < 0) { MessageBoxW(hwnd, L"Nevyplňovat píčovinama", L"Chyba", MB_OK | MB_ICONERROR); return; } ...
22.09.2016 (22:18:28)
mirekP:
Goheeca - mne nejde o delenie 0 ale vseobecne cokolvek co by mohlo vyvolat vynimku, delenie som dal len ilustracne

8-bit - na tvojom rieseni sa mi trochu nepacia 2 veci
1) vzdy ako programator chce robit volanie by musle pisat ten takyto if - pisanie toho isteho kodu co by sa nemalo robit...
2) pri volani funkcie vypocetOdpracovanychDni musi programator pozriet do implementacie tej funkcie aby vedel ze take nieco ma tak osetrovat ====> z toho mam otazku
Je to OK pisatakyto kod aby pri potrebe jeho pouzitia som si musel pozriet implementaciu a na zaklade toho posudit co potrebujem osetrit? To by mohol byt u zlozitejsunkcie problem
**13
Co ak k tomu kodu ani nemam pristup. Je to iba nalinkovane cez .h subory alebo ako sa to robi.... skratka je to kniznica tretej strany
22.09.2016 (22:41:08)
8-bit obalka (web) :
1) Není třeba psát opakovaně ten samý kód. Stačí vždy jeden if, který případně vrátí číslo chyby vyššímu bloku v hierarchii. A někde výš může být např. funkce, která ošetřuje všechny chyby hromadně. Představivosti se meze nekladou.

2) Programátor by měl mít přístup ke zdrojáku a/nebo dokumentaci od každé funkce, kterou použije. Pokud ne, je něco hodně špatně.

To samé platí pro i návratové hodnoty. Chybu lze indikovat různými prostředky - třeba záporným číslem, chybovým kódem (tady určitě je žádoucí použít #define), globální proměnnou nebo vracením struktury **22
23.09.2016 (00:20:14)
Goheeca (web) :
Aha! Ale do implementace koukat nemusis v C++ mas totiz syntaktickou konstrukci: http://stackoverflow.com/questions/88573/should-i-use-a... kterou jak se doctes nemas pouzivat
A novy C++ na to jde dokonce z druhy strany a http://en.cppreference.com/w/cpp/language/noexcept_spec
Jinak proto jestli ti funkce, metoda muze vyhodit vyjimku nemusis cist implementaci, staci si precist dokumentaci. **09
23.09.2016 (12:50:50)
mirekP:
dakujem
8-bit - vedel by si mi trochu viac vysvetlit prvu moznost? to som nejako nepochopil **22
Goheeca - cítat dokumentaciu ale nemusí vzdy, moze byt nezodpovedny a neprecita si ju a pride sa na to v tej najhorsej chvíli
ten c++ 11 noexcept by sa mal podla toho co som k tomu nasiel pouzívat tiez len v specialnych prípadoch
toto sa mi na C++ zatial nepáci, aby pokial si neprecita dokumentáciu pouzivatel (programator) ani nevedel ze by mal nieco osetrovat
jedine ako nejaky plugin pre VS, napriklad doxygen, len to ni je sucast jazyka ...
23.09.2016 (18:50:18)
VroutekB:
Hlavně co nejvíc abstrakce do kódu pánové, aby ty aplikace náhodou nebyly pak rychlé! **07
24.09.2016 (00:53:52)
Goheeca (web) :
>VroutekB

Je abstrakce a abstrakce, jsou jazyky, co ji zvladaji lepe a hure. Zalezi, kde se v jake oblasti se pohybujes, ale omezovat se kvuli rychlosti na 1 - 2 jazyky taky neni moc dobre, neni to jedine kriterium.


Přezdívka:*
Heslo:*

███   ███   ███   
█ █     █   █ █   
███    █    ███   
█ █    █    █ █   
███    █    ███   
Opiš:*

Zde můžete smazat vlastní vlákno nebo kteroukoliv odpověď v něm. Můžete smazat vlastní odpověď v cizím vlákně, pokud na ni ještě nikdo jiný nereagoval. Mazat cizí vlákna a odpovědi v nich mohou pouze admini. Smazání příspěvku je nevratná operace! Smazáním vzkazu se smažou i odpovědi na něj.
Seznam uživatelů
Zpět na knihu