Kezdőoldal » Számítástechnika » Programozás » Mire is jók a try-catch blokkok?

Mire is jók a try-catch blokkok?

Figyelt kérdés

Nem nyelvfüggő, hanem úgy általában. Nem értem, miért hasznosabb, mint egy sima elágazás. Régóta tanulok hobbiból, több nyelvet is ismerek, de eddig nemigen használtam, mert akárhogy magyarázzák, nem értem, mitől tud többet.

Vagy ez inkább csak ilyen formaiság, hogy így kezeljük az esetleges elsz@rásokat?

Illetve konkrét példát tudnátok írni, amikor érdemesebb ezt használni?



2021. máj. 18. 09:28
1 2
 1/12 anonim ***** válasza:
63%
A nem várt hibák kezelése a célja elsősorban, de bővebben, amit oda raksz, az olyan dolog, ami normál esetben nem kívánatos, az if else esetén mindkét ág kívánatos, csak simán mást kell tennie. Ezen felül a hibakezelés a program megállásához is vezethet és az is megadható, hogy mielőtt leáll mit tegyen stb.
2021. máj. 18. 09:54
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
62%

Mit ágaztatsz el egy ArrayIndexOutOfBoundsException-ön például?


Amúgy a kivétel, mint ahogy a neve is sugallja, egy kivételes esemény, azaz egy olyan történés, ami a szekvenciális programfutásba logikailag nem fér bele. Mert ha minden lehetséges hibát feltételekkel akarnál lekezelni, akkor minden második sorodba tehetnél egy if-et, vagy adott esetben akár egy ormótlan if..elseif...elseif...else fát. Kinek hiányzik ez?

Sokkal jobb, ha a kivételeket egy struktúrálisan eltérő helyen kezeli az ember. Átláthatóbb, könnyebben kezelhető lesz a dolog.

2021. máj. 18. 10:02
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
43%
2-es: Azért sokszor jók az IF-Else ágak a try/catch helyett, feltéve, ha nem nagyon sokat kell írni belőlük. Mert azért teljesítmény szempontjából jobbak az if-else ágak. Ha valaki folyamatosan try/catch blokkokat használ, számolnia kell a program sebességének a csökkenésével!
2021. máj. 18. 10:48
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
0%
#3 Hiszed te. A try-nak szinte nulla a költsége, az exception dobásnak viszonylag nagy. Tehát nem igaz, hogy egy csomó try-catch lassítja a programod.
2021. máj. 18. 13:04
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
#4: Ha ez így van, akkor ezek szerint én tudtam rosszul.
2021. máj. 18. 14:47
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:
35%

#3


Van valamennyi plusz overheadje a try-catch-nek, de minimális.

2021. máj. 18. 15:21
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
14%

...csak annyi a szerepe, hogy nem várt hiba esetén egy olyan ágra ugorjon, amiben esetleg tudod kezelni.


TRY = PRÓBA

Tehát megpróbálja végrehajtani az utána következő programblokkot.


CATCH = ELKAPÁS

Azaz, ha a próba alkalmával történik valami probléma (kivétel), akkor azt itt tudod elkapni (lekezelni).


Ha túl sok ilyet használsz végül olyan olvashatatlan kódot kapsz, hogy csak a lényeget nem fogod látni. Régebben is megoldották valahogy, ez egy "újkori-találmány", olyan, mint a divat... :-)

2021. máj. 18. 15:32
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
54%
Hiba propagálására jó a hívási stack-en felfelé. Vagyis a hívó oldalán (tetszőleges szinten ill. mélységben) lehet kezelni a hívott eljárásban történt hibákat. Leegyszerűsíti a hibajelzést, hiba típusának és paramétereinek megadását és a hibakezelést.
2021. máj. 18. 17:14
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
50%

try-catch blokkot ott érdemes használni, ahol várható a hibára futás és a hibát le tudod kezelni.


Klasszikus példa a fájlmentés. Előfordulhat, hogy nem sikerül a mentés valami miatt (várható a hiba) és erre van tartalékmódszered, pl. bekéred újra a mentési útvonalat vagy bármi hasonló.


Viszont, ha nem kezeled le a hibát, csak logolod és leállítod a program működését isten jó hírével, akkor oda ne használj try-catch-t, felesleges.

2021. máj. 19. 16:28
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:
25%

Ahogy mások is írták fentebb, a gyakoribb ellenőrzéseket szokás if-else módon megoldani, a ritkábbakat try-catch-el. Java-ban pl. inkább exception kezeléssel lehet korrekt módon hibát kezelni, mert a visszatérési értékből nem derül ki mi okozta a hibát, ellentétben mondjuk egy C-vel, ahol sokszor egy visszatérési érték alapján meg tudod mondani mi volt az ok.

Kétféle megoldás ugyanarra a problémára, szerintem nem kell túldimenzionálni.

Akkor érdemes használni, ha egy exception-ből több információt tudsz kinyerni, mint nélküle, pl. ha egy sima if csak annyit mond meg, hogy hiba volt, de nem mondja meg az okát. Ilyen esetben try-catch-el legalább ki tudod logolni, hogy mitől halt el az a bizonyos rész.

Ami a költségét illeti, a modern fordítóknál/értelmezőknél a try költsége valóban minimális, amíg a catch ágra nem futsz, mert az már azért lassabb.

2021. máj. 19. 18:26
Hasznos számodra ez a válasz?
1 2

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!