IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Programovacie jazyky pod pokrievkou - výnimky

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
vodacek
Tvůrce
Avatar
vodacek:3.12.2013 11:48

Plnej počet za goto

 
Odpovedať
3.12.2013 11:48
Avatar
Odpovedá na vodacek
Luboš Běhounek Satik:3.12.2013 12:37

Taky 5* - musíme nějak vyrovnat hodnocení (až přijde Kit a dá jednu hvězdičku za GOTO :) )

Odpovedať
3.12.2013 12:37
https://www.facebook.com/peasantsandcastles/
Avatar
vodacek
Tvůrce
Avatar
Odpovedá na Luboš Běhounek Satik
vodacek:3.12.2013 12:44

vidím to úplně stejně

 
Odpovedať
3.12.2013 12:44
Avatar
coells
Tvůrce
Avatar
Odpovedá na vodacek
coells:3.12.2013 12:56
:-D

Ve "vyšších" programovacích jazycích goto zakázali, jenže pak zjistili, že je to docela potřebná věc. Takže ho vrátili zpět, a aby to nevypadalo hloupě, dali mu nový název:

  • break = goto
  • continue = goto
  • throw = long goto

Jenže ani to nestačilo a existují případy, kdy je goto preferovanou variantou, takže v Javě navíc zavedli labeled break a labeled continue. Vtipné na tom je, že kvůli jednomu procentu případů tak museli zavést podivnou syntaxi labeled cyklů do jazyka.

Každopádně díky za hodnocení.

 
Odpovedať
3.12.2013 12:56
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Luboš Běhounek Satik
Kit:3.12.2013 12:59

Zatím jsem to jenom přelítl, vyvalil jsem oči a nechal si to na večer, až na to bude klid. Zatím mám pocit, že by ten článek měli číst programátoři od 18 let ... praxe.

Odpovedať
3.12.2013 12:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovedá na coells
Kit:3.12.2013 13:02

Téměř všechna goto a break se dají nahradit returnem. Throw je jen jiný (chybový) return.

Odpovedať
3.12.2013 13:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
coells
Tvůrce
Avatar
Odpovedá na Kit
coells:3.12.2013 15:16

Téměř všechny řídící struktury se dají nahradit returnem, ale nebylo by to správné a navíc se tu o tom nebavíme. Throw je mnohem víc než jen return.

Editované 3.12.2013 15:17
 
Odpovedať
3.12.2013 15:16
Avatar
Kit
Tvůrce
Avatar
Odpovedá na coells
Kit:3.12.2013 15:29

Ten poslední příklad bych si představoval spíš takto:

:
} CATCH EX_INVALID_STREAM {
    printf("Invalid input stream\n");
    break;
} CATCH EX_INVALID_NUMBER
    printf("Invalid number on input\n");
    break;
} CATCH EX_NAN
    printf("Result is not a number\n");
    break;
}

Ten výstupní string by měl vznikat už v místě chyby, protože jinak je to ošetřování poměrně komplikované.

Odpovedať
3.12.2013 15:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
coells
Tvůrce
Avatar
Odpovedá na Kit
coells:3.12.2013 21:43

Ty možná ano, ale já jsem to schválně takhle nenapsal ze dvou důvodů:

  1. nefungovalo by to
  2. nefungovalo by to

Zdá se to jako jeden důvod, ale zdál se mi tak důležitý, že jsem ho uvedl dvakrát.

Bonus pro toho, kdo přijde na důvod, proč je v tomhle případě větvení na úrovni CATCH špatně ;-)

 
Odpovedať
3.12.2013 21:43
Avatar
vitamin
Člen
Avatar
vitamin:4.12.2013 9:13

Veľmi zaujímavý článok, ale v praxi je to nepoužiteľné. setjump/longjmp sú pomalé funkcie ktoré spomalujú normálny beh programu preto sa na spracovávanie výnimiek nepoužívajú(v niektorých prípadoch ich treba napr pri odchytávanie výnimiek z win knižníc ktoré používajú SEH). Tie tvoje "výnimky" nemôžu opustiť funkciu kde boli "vyhodené" a množstvo ďalších obmedzení.

 
Odpovedať
4.12.2013 9:13
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!