Miért van a Java-ban break meg continue utasítás?
Mert mondjuk a kivétel drága?
(bár egy java programnak tkp. mindegy, de most nem erről van szó :)
Ennyi erővel a kivételkezelés is felesleges, nem?
Legalábbis én úgy gondolom, hogy elágazásokkal pl. ki lehetne váltani. Meg a függvények visszatérési értékének "ügyeskedésével"...
Szerintem szimplán arról van szó, hogy megkönnyíti a kódolást... De ha te 1-1 kulcsszó helyett komplett kivételkezelést akarsz írni, hát hajrá...
A kivételeket a hibák lekezelésére és azok jelzésére találták ki és logikailag ma is arra használják.
De egy ciklus megszakítása nem feltétlenül jelenti azt, hogy ott hiba van. Lehet egyszerűen optimalizálási kérdés, például egy sima lineáris keresésnél.
Elég rossz "szokás", hogy manapság vannak akik mindent kivétellel oldanak meg/akarnak megoldani.
"Arra gondolok, hogy simán helyettesíthetem egy kivétel dobással adott helyen majd elkapom a cikluson kívül break esetében, vagy cikluson belüli blokkban continue-nál."
Csak képzeld el, mennyire rusnya kódot eredményez ez. Akkor már egyszerűbb if-eket használni, hogy a ciklus maradékát belerakod egy if-be, és ha break-et helyettesítesz akkor a ciklus feltételébe is belerakod. Ez sem lenne szép, de mégse egy böszme try-catch taknyolás.
Ez kb olyan, mint mikor valakik
do
{} while(false);
ciklusokat használnak hogy ki tudjanak break-elni belőle (na EZ a rossz használata a breaknek). Ótvar dolog ez is, az is.
Rendben a fogalmazás nem volt pontos valóban.
Ugyanis a kivételeket is egy kalap alá vettem, remélve, hogy élesebb lesz a kontraszt a 2 dolog között.
Az, hogy megszakítasz egy ciklust, mert úgy gondolod, hogy fölösleges végigmenni teljesen, milyen szempontból meríti ki a kivétel fogalmát?
(Arra, hogy a kód hogy néz ki inkább nem térek ki.)
(Amúgy meg ha már kérdezed, a konkrét futásidejű hibákat is le lehet kezelni. Vannak ezekre is megoldások.)
7-esnek én értem, hogy nem rövidebb, de ha olvasod a kódot és látsz egy "try {"-t akkor számítasz arra, hogy kivétel lehet, a ciklusoknál ez nincs így, ott nem számítasz össze-vissza break meg continue utasításokra.
A példánál maradva, ha megtalálod amit kerestél a gráfban/fában/valamiben visszadobod kivételként azt a jelzést, hogy megtaláltad és hozzá az adatot is, mert nyilván szükséged lesz rá. Ez nagyon szépen kezelhetővé teszi ezt az esetet, és sokkal kifejezőbb mint a break, tudod az okát a kivétel típusából és plusz információt is szállít.
"Mert mondjuk a kivétel drága? "
Ez nem számít, hiszen egy ilyet nagyon egyszerűen ki lehet optimalizálni. Talán egyszerűbben, mint külön statementeket készíteni.
Amúgy az oka az, hogy a Java nem kimondottan minimalista nyelv. Itt nem arra törekedtek, hogy minél kevesebb statement és nyelvi feature legyen.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!