– Szia Amigo!
"Szia, Ellie! Milyen az élet?"
"Kitűnő, köszönöm. Hogy vagy?"
"Szuper, ma reggel rengeteg új dolgot magyaráztak el nekem."
"Nos, ez nagyszerű. Nem vagy fáradt?"
"Igen, ez van. Kicsit fáradt vagyok."
"Akkor csak szerencséd volt. Ma egy nagy, összetett témával akartam foglalkozni, de az utolsó pillanatban meggondoltam magam, és úgy döntöttem, hogy egy kicsi, egyszerű témával foglalkozom."
"Kicsi és könnyű? Készen állok."
"Ma részletesen megvizsgáljuk a Kivételek témáját."
– Hibakezelésről beszélsz?
"Nem szabad a kivételeket hibának tekinteni. A kivételek inkább olyan bejelentések, amelyek szerint "valami váratlan történt". E jelentések alapján alternatív lépéseket javasolhat."
"Minden a módszerekről szól. Ha egy módszert hívsz, az megígéri, hogy megteszi azt, amire hívták. "
"Ha egy módszer bármilyen okból nem tudja megtenni azt, amire hívták, értesítenie kell a hívót."
"Más szóval, a legrosszabb, ami történhet, ha egy módszer nem végzi el a munkáját, és nem szól róla senkinek. Ennél nem lehet rosszabb. Amikor ez megtörténik, elveszíti az uralmat a helyzet felett. "
"Amikor új programozó vagy, úgy tűnik, csak metódusokat hívsz, és azok biztosan azt teszik, amit kértél tőlük."
"Amikor Ön tapasztalt programozó, tudja, hogy több tucat tényező befolyásolhatja a módszer azon képességét, hogy elvégezze a feladatát, és hogy sok olyan eset van, amely megakadályozhatja, hogy egy módszer befejezze a feladatát."
"A programozó szemszögéből ezerszer jobb, ha egy program leáll, amikor hibát talál, mint ha a program hibát talál, majd tovább működik (helytelenül) anélkül, hogy a felhasználó észrevenné, mi történt."
"Tehát a program, amelyik hibát mutat, rosszabb lehet, mintha a program bezárulna és elveszne az összes adat?"
"Miből gondolta, hogy a program egyszerűen rosszul mutat valamit? Lehet, hogy a programokban sok hiba van, és minden adata helyrehozhatatlanul elveszik? Tegyük fel, hogy 3 órája gépelt szöveget, de egyiket sem menti el, mert egy hiba, amely mindössze két perc után történt."
"Ha egy kezdő programozó kivételekkel találkozik, frusztrált lesz."
"A valóságban azonban a kivételek felfedik az összes lehetséges forgatókönyvet, amelyet előre kellett volna látnia, de nem tette."
"Dönthetsz úgy, hogy nem kezeled a kivételeket, és ettől rossz programozó leszel. De ha a módszereid nem dobnak kivételeket, akkor egyáltalán nem vagy programozó – mert nem értetted meg ezt az egyszerű igazságot:
"egy metódus vagy azt csinálja, amit megírtak, vagy kivételt dob. Nincs harmadik lehetőség!"
– Oké, hiszek neked. Ígérem, hogy kivételeket alkalmazok.
"Remek. Akkor hadd meséljek a kivételek hierarchiájáról:"
"A kivételhierarchia négy osztályon alapul."
"A legalacsonyabb alaposztály a Throwable ."
"Az Error és Exception osztályok öröklik."
" A RuntimeException örökli a kivételt ."
"Az Error osztály a JVM-hibák alaposztálya, mint például a StackOverFlow , OutOfMemory , ..."
"Egy program általában nem tud helyreállni az ilyen hibákból, ami a leálláshoz vezet."
"Valóban, mit lehet tenni, ha nincs elég memória a program normál futtatásához, vagy veremtúlcsordulás történt?"
" Az Exception a program által dobott összes szokásos kivétel alaposztálya. A RuntimeException egy speciális kivétel , amelynek kissé eltérő szabályai vannak."
"Kik ők?"
– Most éppen ezt fogom elmagyarázni.
"Amint valószínűleg emlékszik rá, a kivételek két kategóriába sorolhatók: bejelölt és nem ellenőrzött ."
"Ha egy metódus ellenőrzött kivételeket dob, akkor az őt hívó metódusnak egy try-catch blokkba kell csomagolnia a hívást. Nos, vagy ez, vagy visszadobja a kivételt (a hívójának), egyértelműen jelezve a dobásokat a metódus aláírásában."
"Ezek a szabályok/korlátozások nem vonatkoznak a nem ellenőrzött kivételekre."
"Tehát minden kivétel, amely a kivételt örökli, bejelöltnek tekintendő. Kivéve azokat a kivételeket, amelyek a RuntimeException kivételt öröklik, és amelyeket bejelöletlennek tekintünk."
– Ööö. Emlékszem, korábban meséltél nekem valami ilyesmit.
"Amigo! Minden interjúban kérdeznek a kivételek hierarchiájáról . Még egyszer elmondom – minden interjúban . Tökéletesen ismerned kell ezt a témát."
"Rendben. Újra elolvasok mindent, és rájövök. Köszönöm, hogy segítettél, Ellie."
GO TO FULL VERSION