Kezdőoldal » Számítástechnika » Programozás » Miért van a Java-ban break...

Miért van a Java-ban break meg continue utasítás?

Figyelt kérdés
A goto-t mint vezérlés irányító utasítást teljesen kiszedték, de ezeket benne hagyták. 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. Nem értem miért hagyták ezt benne, ha egyszer fölösleges.

2014. jún. 19. 16:05
1 2 3
 1/30 anonim ***** válasza:
80%

Mert mondjuk a kivétel drága?

(bár egy java programnak tkp. mindegy, de most nem erről van szó :)

2014. jún. 19. 16:25
Hasznos számodra ez a válasz?
 2/30 anonim ***** válasza:

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á...

2014. jún. 19. 16:26
Hasznos számodra ez a válasz?
 3/30 A kérdező kommentje:
Szerintem a kivételkezelés jobban követhető, mint a break meg a continue a ciklusban. Ez a felvetés, hogy visszatérési értékekkel játszunk meg minden, na ez nagyon durván rontaná a kód olvashatóságát.
2014. jún. 19. 16:38
 4/30 anonim ***** válasza:

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.

2014. jún. 19. 17:24
Hasznos számodra ez a válasz?
 5/30 A kérdező kommentje:
Nem a hibák kezelésre találták ki, persze vannak olyan kivételek amelyek erre lettek definiálva, de ezeket tipikusan nem is kezeljük le pl. OutOfMemoryError, StackOverflowError. Egyáltalán hogyan lehet ilyet lekezelni? A fájl végének elérése meg hasonlók nem hibák a program működésében, hanem jelzések.
2014. jún. 19. 17:34
 6/30 anonim ***** válasza:
72%
LoL, ennyi hozzáértéssel talán nem kéne okoskodnod.
2014. jún. 19. 17:59
Hasznos számodra ez a válasz?
 7/30 iostream ***** válasza:
100%

"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.

2014. jún. 19. 18:43
Hasznos számodra ez a válasz?
 8/30 anonim ***** válasza:

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

2014. jún. 19. 18:57
Hasznos számodra ez a válasz?
 9/30 A kérdező kommentje:

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.

2014. jún. 19. 19:40
 10/30 anonim ***** válasza:
27%

"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.

2014. jún. 19. 19:41
Hasznos számodra ez a válasz?
1 2 3

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!