Miért jobb a kivételkezelés mint egy egyszerű if elágazás?
Na, a sok ostoba válasz mutatja az itteni színvonalat...
A kivételkezelés lényege az üzleti logika és a hibakezelés szétválasztása.
Ha minden egyes függvényről vizsgálni kell, hogy helyesen futott-e le, azt hatalmas mértékben megbonyolítja a (néha amúgy is túlbonyolított) kódot és eltereli a figyelmet arról, amit a kód valójában meg akar valósítani.
A másik előnye, hogy a legtöbb esetben a legtöbb hibát nagyon hasonló módon kezeljük. Általában kiírjuk, hogy milyen hiba történt és megállítjuk a program futását.
Ezt kivételekkel meglehet egységesen, kódismétlés nélkül tenni.
Az viszont természetesen nem igaz, hogy mindig jobb a kivétel, mint egy helyességet jelző flag.
Ha (gyakran, az üzleti logika részeként) várható eset az, hogy valamilyen funkció hibára fut, akkor nem érdemes kivételt dobni, mert a legtöbb rendszeren elég erőforrás igényes és lassú.
"Visítok!!!"
De nehogy kijavítsd a hibáit, mert még a végén legalább két embernek hasznos tudást adnál...
Nincsenek benne semmilyen hibák.
Évek óta dolgozom az iparban, mint senior szoftverfejlesztő a clean code-ra specializálódva.
31%-os tapsihapsi meg rengetegszer bebizonyította már, hogy életében nem látott még egy középiskolai pascal feladatnál bonyolultabb kódot.
Csak azt nem értem, hogy miért nincs még kivágva innen?
A kivételkezelés lényege többes.
Egyrészt az a cél, hogy a hibák kezelése egységesüljön, másrészt, hogy hiba esetén a szükséges lépések automatizáltan végrehajtódjanak (pl. erőforrás felszabadítás, stb.), így nem kell azt a fejlesztőre terhelni, ami ráadásul újabb hibák forrása lenne, vagy lehetne, végül de nem utolsósorban a hibatűrés is cél. A nem kritikus hibák esetén ugyanis lehetőség van azok rendszer szintű lekezelésére és a program tovább futtatására, amely bizonyos esetekben abszolút kivánatos igény, ennek elmaradása ugyanis tetemes anyagi kárral is járhat.
"hiba esetén a szükséges lépések automatizáltan végrehajtódjanak (pl. erőforrás felszabadítás, stb.), így nem kell azt a fejlesztőre terhelni"
Miért nem azzal kezdted, hogy nem tudod mi az a kivételkezelés?
Linkeljünk róla egy Wikipedia cikket, vagy azt azért meg tudod találni magadtól is?
Áhh, miket feltételezek... [link]
Véletlenül mintha pont azt írná, amit én:
"Az ilyen hibajelenségek az alapvető utasításkészlettel régen nem voltak kezelhetőek (elkaphatóak). A normál hibakezelés általában körülményes, sok változó beiktatását és figyelését, valamint rengeteg feltételes utasítást igényel. Ezen túl nem is alkalmas arra, hogy például az operációs rendszer, vagy a processzor által küldött különféle jelzéseket, figyelmeztetőket elfogja. Így a programozónak kellett sok olyan sorral megtűzdelnie a kódjait, amelyek nem csak a helyet foglalták, de ormótlanná tették és le is lassították a program futását. Ha nem tette volna meg ezt, akkor hiba esetén az alkalmazása váratlan helyen megszakította volna a futását, és ezáltal a program használata adatvesztéssel járt volna."
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!