Tudás vs. készségek
![Régi szint 09-1]()
A főiskola megtanította nekünk, hogy nincs nagy különbség elmélet és gyakorlat között. Nos, biztosan megérted, hogy ez nem ugyanaz. De nem látod az alapvető különbséget. Mégis van egy.
A legtöbben az egyenlőségjelet a „tudom” és a „tudom” közé teszik. Ön? Mit szólnál néhány példához?
- Tudom, hogy a dohányzás rossz nekem, de dohányzom.
- Tudom, hogy a gyorsétterem rossz nekem, de megeszem.
- Ismerem a közlekedési szabályokat, de nem tudok vezetni.
- Tudom, hogy jó nekem a kocogás, de nem kocogok reggel.
Gyakran előfordul, hogy az emberek a „tudom” kifejezést „tudom”-nak veszik. Jó példa ez a közlekedési szabályokra. Ha valaki ismeri az előírásokat és tudja, hogyan kell vezetni, az azt jelenti, hogy vezethet? Dehogy. Mi van, ha azt hiszi, hogy tud vezetni? Akkor miért kell neki oktató – ő már mindent tud.
Ha biztos benne, hogy már mindent tud, valószínűleg nem fog semmi újat tanulni. És ha biztos vagy benne, hogy mindent tudsz, nem fogsz tanulni. Egy ilyen gondolat meg sem fordul a fejében. Ez pedig azt jelenti, hogy elszalaszt minden csodálatos lehetőséget, hogy tanuljon valamit. A szokásos főiskola csak tudást ad; önállóan kell készségeket szereznie. De mit hallok? Volt már gyakorlatod az elmélet mellett a főiskolán? Oké, ha
fizika karon tanultál, készítsen egy gőzgép működőképes modelljét legalább 20%-os hatásfokkal. Fogadok, hogy tudja, hogyan kell csinálni, de valójában nem lesz képes megtenni, igaz? Te
vegyész vagy ? Készíts füstmentes port. Tudod hogyan, de nem tudod, he?
Matematikus, te? Számítsa ki egy tüzérségi lövedék röppályáját! Ne felejtse el figyelembe venni a héj alakját. A matematikai pontok a való életben nem repülnek. És nincsenek gömbölyű lovak.
Biológus? Izolálja a penicillint. Ez a penész a dinnyén nő, szóval tudod. Tudod, hogyan – csodálatos! Meg tudod csinálni?
Közgazdász?Készítsen előrejelzést az olaj árának növekedéséről. Kész? És most fordítsa át évi 2000 vagy 200 000 dollárra az előrejelzése alapján. Játszottál már FOREX-en? Valódi pénzért? Vagy csak tudod mi az?
Nemzetközi gazdaság? Pompás! Hol nyithatok offshore céget? Hong-Kongban, Írországban vagy az USA-ban. Miért? Még ha tudod is ezt, ami kétséges, aligha lesz képes megtenni, mivel valójában soha nem tetted meg. Még csak fogalmad sincs, hogyan csináld. Ó, ezt nem tanultad az egyetemen? Milyen jogon adjak olyan feladatokat, amelyekre nem vagy felkészülve? Mert ezek
a való élet feladatai. Ez IS gyakorlat , csak annyit tanultál a főiskolán: gömbölyű lovak, tökéletes verseny – a való életben egyik sem létezik. De miért felejtettem el megemlíteni
marketing szakember ? Mi a legjobb módja annak, hogy elköltsem az 500 dolláromat, hogy minél többen értesüljenek az előadásaimról? A reklámban? Tisztában vagy vele, hogy nemcsak a klasszikus reklámozás elavult már, hanem az USP (unique selling proposition) koncepciója is, amelyet biztos vagyok benne, hogy szinte egyedülálló csodaszerként tanítottak a főiskolán?
Felejtsd el, hogy tudsz valamit. Kérdezd meg magadtól – mit tehetek? Hasznos, úgy értem? Valamiért fizetnének pénzt az emberek? Jó pénz, úgy értem? Szóval barátaim, fejezzük ki hálánkat egy olyan csodálatos tanfolyamnak, mint a CodeGym. Ennek köszönhetően nemcsak programozni fog tudni, hanem valóban képes is lesz rá. Néhány év múlva munkát is találhat, és jó pénzt kereshet. Remélem, ez a pénz elég lesz ahhoz, hogy szépen és kényelmesen élhessünk. Még egyszer elmondom, hogy ne feledje: nem számít, mit tudsz. Csak az számít, hogy milyen hasznos készségekkel rendelkezel, amelyeket az emberek szívesen fizetnének neked. Minél előbb megérted ezt, annál jobb.
Új szintet értél el
9. szint
1 Risha, Stack nyom
![Régi szint 09–4]()
- Hé! Ma elmondom, mi az a veremnyom. De először hadd magyarázzam meg, mi az a verem. - Képzeljen el egy köteg papírt - egy bizonyos hivatalnok megbízatását. Egy új feladatot a verem tetejére lehet tenni, ő pedig a verem tetejéről vesz fel egy feladatot. Így a feladatokat nem érkezési sorrendben végzik el. Minden alkalommal, amikor az ügyintéző átveszi az utolsó feladatot.
Az ilyen gyűjtési struktúrát veremnek nevezzük . -
A Java-ban van egy speciális gyűjtemény - Stack. Ebben a gyűjteményben vannak "elem hozzáadása" és "elem elvétele/elvitele" módszerei. Amint azt már tudja, az utoljára hozzáadott elem kerül először felvételre.
- Hum. Nem nehéz, azt hiszem. - Bírság. Akkor hadd magyarázzam el, mi a
veremnyomvan. - Képzeljük el, hogy a Java
függvényben az А függvény hívja
a B függvényt , az utóbbi pedig
a C függvényt , amely viszont a
D függvényt . Tehát
a B funkcióból való kilépéshez először ki kell lépnie a
C funkcióból , ehhez pedig ki kell lépnie
a D funkcióból . Ez nagyon hasonlít a veremhez.
- És mi a hasonlóság? - A veremben ahhoz, hogy egy bizonyos feladathoz eljuss, el kell végezned az összes rárakott feladatot is.
- Nos, ez egy hasonlat, de nem vagyok benne biztos, hogy mindent jól értek-e. - Nézz ide. A Java nyelvben a verem elemek halmaza. Olyan, mint a papírlapok egy kötegben. Ahhoz, hogy felülről vegye a harmadikat, el kell vennie a második lapot, de előtte az elsőt. A lepedőket mindig teheted és veheted, de csak a tetejére teheted, és csak felülről veheted. Ugyanez vonatkozik a függvényhívásra is.
Az А függvény a
B , az utóbbi
a C függvényt hívja meg .
A А kilépéshez először ki kell lépni
B-ből , ehhez pedig ki kell lépni
a C- ből .
- Várj egy percet. Ha jól tettem, az egész verem a következőképpen jelenik meg: "csak az utolsó lap, amely a veremre került", és "először az utoljára hívott függvénynek kell kilépnie". így van? - Igen. Tehát a függvényhívások sorrendje a "függvényhívás verem", vagy egyszerűen csak "hívás verem".
Az utolsóként nevezett függvényt először le kell zárni. Nézzük a példát:
- Rendben. Azt hiszem, a függvényhívással minden világos. De mi is ez a StackTraceElement ? - A Java virtuális gép naplózza az összes függvényhívást. Erre a célra egy speciális gyűjtemény - verem. Amikor egy függvény meghív egy másikat, a JVM egy új
StackTraceElement elemet helyez el ebbe a verembe. Amikor a függvény véget ér, az elem törlődik a veremből.
Így ez a verem mindig naprakész információkat tárol a «függvényhívási verem» aktuális állapotáról. - Minden
StackTraceElementinformációkat tartalmaz a hívott metódusról.
Tehát ennek a metódusnak a nevét a getMethodName segítségével kaphatja meg . - A fenti példa ezt mutatja:
- Szerezd meg a "hívás verem":
- Iterálja a tömböt a ciklus for-each használatával . Remélem nem felejtetted el.
- A metódusnevek nyomtatása a System.out fájlba .
- Érdekes dolog, és láthatóan könnyű. Köszönöm, Risha!
2 Diego, Feladat a verem nyomkövetésén
- Szia Amigo! Íme egy kis feladat a verem nyomvonalának megjelenítéséhez a képernyőn.
Feladatok |
1 |
Mindegyik metódusnak vissza kell adnia a StackTrace
Write öt metódusát, amelyek hívják egymást. Mindegyik metódusnak vissza kell adnia a StackTrace-ét. |
2 |
Ismét StackTrace
Írjon öt egymást hívó metódust. Minden metódusnak vissza kell adnia a hívó metódusának nevét. A hívómódszert a StackTrace segítségével szerezheti be.
|
3 |
A metódusnak vissza kell adnia annak a kódnak a sorszámát, amelyet ezt a metódust
az Írjon öt egymást hívó metódust. Minden metódusnak vissza kell adnia annak a kódnak a sorszámát, amelyből ezt a metódust hívták. Használja az elem.getLineNumber() függvényt . |
4 |
10 hívás veremkövetése
Írjon kódot, hogy 10 hívás veremnyomát kapja. |
5 |
A metódusnak eredményt kell visszaadnia - a verem nyomkövetési mélységét
Írjon egy metódust, amely megjeleníti és visszaadja a verem nyomkövetési mélységét. A verem nyomkövetési mélysége a metódusainak száma (a listában szereplő elemek száma). |
3 Elly, hibák és kivételek
- Szia Amigo! Ma egy nagyon érdekes leckénk van. Mesélek a kivételekről.
A kivétel egy speciális mechanizmus a program hibáinak szabályozására. Íme néhány példa a programban előforduló hibákra:
- A program megpróbál egy fájlt írni a teljes lemezre.
- A program megpróbál meghívni egy változó metódusát, amely a null referenciát tárolja.
- A program megpróbál egy számot elosztani 0-val.
Ezek a műveletek hibát eredményeznek. Ez általában
egy program bezárásához vezet – nincs értelme folytatni a kód végrehajtását.
- Miert van az? - Van értelme forgatni a kormányt, amikor az autó leesik a szikláról?
- Úgy érted, hogy a programnak véget kellene érnie? - Igen. Így volt ez korábban is.
Bármilyen hiba a program leállításához vezetett. - Nagyon okos döntés.
- Nem lenne jobb, ha megpróbálna dolgozni? - Igen. Beírtál egy hatalmas szöveget az MS Word-be, elmented, nincs elmentve, de a program azt mondja, hogy minden rendben. És folytatod a gépelést. Hülyeség, nem?
- Igen. - Aztán a programozók egy érdekes lépéssel álltak elő:
minden függvény visszaadta a munkája állapotát. A 0 azt jelentette, hogy a függvény úgy működött, ahogy kellett volna, bármilyen más érték – hogy hiba történt : ez az érték egy hibakód. - De ennek a megközelítésnek volt egy hátránya. Minden (!) függvényhívás után ellenőrizni kellett a függvény által visszaadott kódot (számot). Először is kényelmetlen volt: a hibakezelő kód ritkán futott le, de mindig meg kellett írni. Másodszor, maguk a függvények gyakran különböző értékeket adnak vissza – mi a teendő velük?
- Igen. Ezt akartam kérdezni. - Aztán jött a fényes jövő - megjelentek a kivételek és a hibakezelés. Így működik:
- Hiba esetén a Java virtuális gép létrehoz egy speciális objektumot – kivételt –, amely tartalmazza a hibával kapcsolatos összes információt. A különböző hibákhoz különböző kivételek vannak.
- Ekkor ez a kivétel arra kényszeríti a programot, hogy azonnal megszakítsa az aktuális függvényt és a következő függvényt, amíg ki nem lép a fő metódusból. Ezt követően a program leáll. A Java fejlesztők ezt a folyamatot "visszatekerik a hívási verem"-nek nevezik.
- De azt mondtad, hogy a program nem fog biztosan kilépni. - Így van,
mert van mód a kivételre fogni. Bármikor és ahol csak szüksége van rá, írhat egy speciális kódot, hogy felfogja ezeket a kivételeket, és tegyen valami fontosat. - Ehhez van egy speciális konstrukciós
próbafogás . Nézze meg, hogyan működik:
- Miért «A method1 hívása után. Soha nem jelenik meg» nem jelenik meg a képernyőn? - Örülök, hogy rákérdeztél. A 25. sorban van nullával való osztás. Ez hibához vezet – kivétel. A Java virtuális gép létrehozta a hibainformációkat tartalmazó
ArithmeticException objektumot. Ez az objektum kivétel. - Kivétel történt a
method1() metóduson belül .
Ez a módszer azonnali leállítását eredményezte. Ez a main metódus leállásához is vezetne , ha nem lenne
try-catch blokk.
- Ha kivétel történik a try blokkon belül, akkor az a catch blokkba kerül .
A blokkpróbában lévő kód többi része nem kerül végrehajtásra, a blokkfogás végrehajtása azonnal elindul.
- Nem egészen értem. - Más szóval ez a kód így működik:
- Ha kivétel történik a try blokkon belül, akkor az ebben a blokkban lévő kód már nem fut le, hanem elindul a blokkfogás végrehajtása .
- Ha nem történt kivétel, a try blokk a végéig végrehajtásra kerül , és a catch soha nem kerül végrehajtásra .
- Ahm! - Képzeljük el, hogy minden metódushívás után ellenőrizzük, hogy a meghívott metódus magától vagy kivétel miatt megszűnt-e.
Ha volt kivétel, a JVM elkezdi végrehajtani a blokkfogást, ha az elérhető, és elkap egy kivételt. Ha nincs fogási blokk, a JVM leállítja az aktuális metódust. Ezután ugyanaz az ellenőrzés kezdődik a metódusban, amely az aktuális metódust hívta.
- Most azt hiszem, megkaptam. - Rendben van.
- És mi az a Kivétel a zárblokkon belül? -
Minden kivétel az Exception osztályból örökölt osztály. Bármelyiket elkaphatjuk, ha a fogásban megadjuk az
osztályátblokkot, vagy mindegyiket egyszerre egy közös szülőosztály Kivétel megadásával. Ezután az e változóból (ez a változó egy kivételobjektum hivatkozását tárolja) minden szükséges információt megkaphat a hibáról.
- Nagy! És mi van, ha az én módszeremben különböző kivételek fordulnak elő, kezelhetem őket különböző módon? - Neked kell. Ezt a következőképpen teheti meg: - A try blokk több
fogási![Régi szint 09-7]()
blokkot is tartalmazhat , amelyek mindegyike elkapja a saját típusú kivételeket.
- Umph. Nos, nagyjából értem. Persze én magam nem írok ilyesmit. Viszont nem fogok megijedni, ha találkozom egy ilyen kóddal.
4 Elly, RuntimeException, dobások
![Régi szint 09-8]()
- Úgy döntöttem, hogy ma egy másik témát hozok fel. A Java-ban az összes kivétel két típusra oszlik:
ellenőrzött/ellenőrzött és
ellenőrizetlen/ellenőrzött . A bejelölt kivételeket el
kell fogni, a nem bejelölteket el lehet fogni
, de ez nem kötelező .
- Lehet-e szándékosan kivételeket dobni egy kódba? - A kódodban te magad is dobhatsz kivételeket. Akár saját kivételeket is írhatsz. De később belemélyedünk ebbe a gödörbe. Most tanuljuk meg, hogyan kell dolgozni a Java virtuális gépek által kiadott kivételekkel.
- RENDBEN. - Ha kivételek
ClassNotFoundException és
FileNotFoundExceptionmetódusban dobnak (megjelennek), a programozónak meg kell adnia azokat egy metódus aláírásában (metódus fejlécében). Az ilyen
kivételeket ellenőrzik. Általában így néz ki:
- Tehát csak dobásokat írunk és kivételeket listázunk vesszővel elválasztva. Jobb? így van? - Igen. De van még egy érdekesség. Az alábbi példa összeállításához a
method1()-t meghívó metódusnak vagy el kell
fogadnia ezeket a kivételeket , vagy
előre kell dobnia. Ha a bejelölt kivételt előre szeretné dobni, meg kell adnia a metódus fejlécében . - Még egyszer, ha a
fő metódusban olyan metódust akarunk hívni, amelynek fejlécében a
FileNotFoundException ,…akkor a következő két dolog egyikét kell tennie:
- a kivételek elkapásához FileNotFoundException, … A kódot, ahol veszélyes metódust hív meg, egy try-catch blokkal
kell csomagolnia
- hogy ne kapja el a kivételeket FileNotFoundException,…
Ezeket a kivételeket hozzá kell adnia a
main metódus
dobáslistájához .
- Mondana egy példát? - Nézd meg: - Ezt a példát nem fordítjuk le, mert a
main metódus meghívja a method1() metódust, ami kivételeket dob, amelyeket el kell fogni. - A példa összeállításához hozzá kell adni a kivételkezelést a
main metódushoz . Ezt kétféleképpen teheti meg: - És itt
a try-catch segítségével fogjuk meg :
- Egyre világosabb, de nagyon kevés. - Nézze meg az alábbi példát: - Még mindig van kivétel -
RuntimeException és az abból örökölt osztályok.
![Régi szint 09-10]()
![Régi szint 09-11]()
![Régi szint 09-12]()
Nem kötelező elkapni vagy eldobni őket. Ezek ellenőrizetlen kivételek. Ezeket a kivételeket nehéz megjósolni, így szinte lehetetlen megjósolni előfordulásukat. Ugyanezt megteheti velük, de nem kell megadni őket
dobásban .
5 Risha, A hívásverem görgetése, hogyan kell ezt megtenni kivételes esetekben
- Szeretnék egy kicsit többet elmondani a kivételek működéséről. Az alábbi példa ezt magyarázza:
- Nem értem. - Rendben. Elmagyarázom, mi a helyzet. - A bal oldali példában több metódust hívunk meg láncrendben.
A Method2() -ben kifejezetten kivételt hozunk létre és dobunk (hiba kezdeményezésére). - A jobb oldali példa mutatja, mi történik. Nézd meg a
metódust2() . A kivétel létrehozása így alakul: létrehozunk egy
RuntimeException típusú objektumot, eltároljuk egy speciális változó
kivételben , és azonnal kilépünk a metódusból –
return . -
Az 1-es metódusban a metódus2 hívása után van egy ellenőrzés,
van-e kivétel vagy nincs; Ha van kivétel, akkor a method1 azonnal leáll. Ez az ellenőrzés implicit módon történik az egyes (!) Java metódusok meghívása után.
- Azta! - Pontosan.
- A Method main jobb oldali oszlopában leírtam, hogy mi történik, ha kivételt elkap a
try-catch blokk.
Ha nem volt kivétel, a kód a tervek szerint folytatódik. Ha volt kivétel a catch -ben megadott típusból , akkor azt kezeljük.
- És mit jelent a dobás és az instanceof ? - Nézd meg a bal oldali utolsó sort,
dobj új futásidejű kivétel(eke)t. Ily módon kivételt hozunk létre és dobunk ki. Ez csak egy példa. Egyelőre nem tesszük meg.
- A jobb oldali blokkban található « а instanceof B » paranccsal ellenőrizzük, hogy az a objektum
B típusú -e . Azaz,
hogy a változókivételben tárolt objektum RuntimeException típusú-e . Ez egy logikus kifejezés.
- Nos, ez egy kicsit világosabb.
6 Diego, Kivételfogási feladat
- Nézz ide! Diego bácsi kevés elkapási feladatot hozott neked. Sok szerencsét. Szerintem szükséged lesz rá. Heh.
![Régi szint 09-15]()
- Szia Amigo! Íme néhány érdekes kivételfogási feladat.
Fogós feladatok |
1 |
1. Kivétel számokkal történő műveleteknél.
Fogja meg a kód futtatásakor fellépő kivételt: int a = 42 / 0;
A kivétel megjelenítése a képernyőn, megadva annak típusát |
2 |
2. Kivétel a karakterláncokkal végzett műveletek során.
Fogja meg a kód futtatásakor fellépő kivételt: String s = null; String m = s.toLowerCase();
A kivétel megjelenítése a képernyőn, megadva annak típusát. |
3 |
3. Kivétel a tömbökkel végzett műveleteknél.
Fogja meg a kód futtatásakor fellépő kivételt: int[] m = new int[2]; m[8] = 5;
A kivétel megjelenítése a képernyőn, megadva annak típusát. |
4 |
4. Kivétel List gyűjteményekkel való munkavégzés esetén
Fogja meg a kód futtatásakor fellépő kivételt: ArrayList<String> list = new ArrayList<String>(); String s = list.get(18);
A kivétel megjelenítése a képernyőn, megadva annak típusát. |
5 |
5. Kivétel Map gyűjteményekkel való munkavégzéskor.
Fogja meg a kód futtatásakor fellépő kivételt: HashMap<String, String> map = new HashMap<String, String>(null); map.put(null, null); map.remove(null);
A kivétel megjelenítése a képernyőn, megadva annak típusát. |
- Tipp: először írjon egy programot, majd nézze meg, hogy milyen kivétel történik, majd változtassa meg a kódot, és rögzítse a kivételt.
7 Risha, Hogyan működik a többszörös fogás
![Régi szint 09-16]()
- Most még néhány érdekes előadás. Nagyon szeretek tanítani. - Szeretném elmondani, hogyan működik a többszörös
fogás .
Valójában ez nagyon egyszerű: amikor a try blokkban kivétel történik , a program végrehajtása átkerül az első
catchre . -
Ha a blokkfogás zárójelben megadott típusa megegyezik a kivétel-objektum típusával, akkor a kód végrehajtása a {}-on belül kezdődik. Ellenkező esetben a következő fogáshoz megyünk . Az ellenőrzés ott megismétlődik. - Ha nincs több
fogási blokk, de a kivételt nem sikerült elkapni, akkor az előredobásra kerül, és az aktuális metódus megszakad.
- Látom. Az a fogás kerül végrehajtásra, amelynek típusa megegyezik a kivétel típusával. - Igen, igaz. Valójában ez egy kicsit bonyolultabb: a lényeg, hogy az osztályok örökölhetők egymástól. Ha a «Cow» osztály az «Állat» osztályból öröklődik, a «Cow» típusú objektum nem csak «Cow» típusú változóban tárolható, hanem egy «Állat» típusú változóban is. .
- És akkor mi van? - Mivel az összes kivétel az Exception vagy a RuntimeException osztályból öröklődik (amely szintén az Exception osztályból öröklődik ), mindegyik elkapható a catch (Exception e) vagy a catch (RuntimeException e) parancsokkal . - És akkor mi van? - Ez azt jelenti,
először is elkaphat bármilyen kivételt a catch(Exception e) paranccsal .
Másodszor, a fogási blokkok sorrendje számít. Példák: - A 0-val való osztásból származó
aritmetikai kivételt a második fogás fogja el. ![Régi szint 09-17]()
- Az alábbi példában
az ArithmeticException az első fogásban van elkapva , mivel az összes kivétel osztálya a kivételtől öröklődik. Tehát
a kivétel minden kivételt elkap .
![Régi szint 09-18]()
- Az alábbi példában az
ArithmeticException kivételt a rendszer nem fogja, hanem továbbítja a hívó metódushoz.
- Nos, most már egyre világosabb. Ezek a kivételek nem olyan egyszerűek. - Csak úgy tűnik. Valójában ez az egyik legegyszerűbb dolog a Java-ban.
- Kétlem, hogy örüljek vagy idegeskedjek emiatt…
8 Diego, Több kivételfogási feladat
- Szia Amigo! Tegnap berúgtam és túlbonyolítottam a feladataidat, de remélem, nincs benned kemény érzés, és mindegyiket megoldod? Ez a saját érdekedben van. Itt:
Feladatok |
1 |
1. Kivételek
Létezik egy módszer, amely két kivételt az Exception- ből , a másik kettőt pedig a RuntimeException- ből örökölt : NullPointerException , ArithmeticException , FileNotFoundException és URISyntaxException . A NullPointerException és a FileNotFoundException
elkapására van szükség , de az ArithmeticException és az URISyntaxException elkapására nem . Hogyan kell csinálni? |
2 |
2. Kivételek elfogása
Három kivétel van, amelyek szekvenciálisan öröklődnek a Kivételtől : class Exception1 kiterjeszti Exception class Exception2 kiterjeszti Exception1 class Exception3 kiterjeszti Kivétel2
Van egy metódus, ami a következőképpen írható le: public static void metódus1() dob Exception1, Exception2, Exception3
Írj egy fogást blokkolja a három kivétel1 , kivétel2 és kivétel3 elkapásához |
3 |
3. Szelektív kivételek elkapása
1. Nézze meg, milyen kivételeket dob a BEAN.methodThrowExceptions metódus .
2. A processExceptions() metódusnak meg kell hívnia a BEAN.methodThrowExceptions metódust , és kezelnie kell a kivételeket:
2.1. Ha kivétel FileSystemException történik, akkor naplózza azt a BEAN.log metódus meghívásával , és dobja előre
a 2.2. Ha kivétel CharConversionException vagy bármely más IOException történik, csak naplózza a BEAN.log
3 metódus meghívásával. Adja hozzá a 2.1-ben továbbítandó kivétel osztályát/típusát. a folyamathozKivételek()módszer aláírása.
4. Kezelje a fennmaradó kivételt a main() metódusban, és naplózza. Használja try..catch
Tipp:
Ha elkapta a MyException kivételt , amelyet nem akart elkapni, akkor a következő kóddal dobhatja előre: catch (MyException e) {
throw e;
}
|
4 |
4. Ellenőrzött kivételek elkapása Kezelje az összes ellenőrzött kivételt a processExceptions()
metódusban . Minden egyes ellenőrzött kivételt meg kell jelenítenie a képernyőn. Csak egy blokkpróbát használhat .
|
5 |
5. Nem ellenőrzött kivételek elkapása Kezelje az összes nem ellenőrzött kivételt a processExceptions()
metódusban . Meg kell jelenítenie a képernyőn az egyes előforduló kivételek veremnyomát a printStack() metódus használatával . Csak egy blokkpróbát használhat .
|
9 Professzor, Előadás a kivételekről
- Ma van egy szuper érdekes témánk - kivételek. Abban az időben, amikor a fiatal tudósokat és programozókat nagyon izgatta ez a téma… - Elnézést, el kell mennem a laborba. Itt vannak az előadás jegyzetei. Szerintem rájössz magadtól. Itt:
Java kivételek (Oracle dokumentáció) Kivételkezelés Java-ban (Java T pont) Java - Kivételek kezelése (oktatóanyagok pont) Alapszintű Java kivételkezelés
10 Julio
- Amigo, mi a véleményed a mai leckéről? A pozitron agyad még nem működött? Diego feladatai elegendőek ahhoz, hogy bárkit is megviseljen. Igyunk egy sört és lazítsunk. Még mindig állsz?
11 Kapitány Mókus
- Szia katona!
- Jó reggelt uram! - Van egy nagyszerű hírem a számodra. Íme egy gyors ellenőrzés, amellyel erősítheti képességeit. Csináld minden nap, és nagyon gyorsan fejleszted képességeidet. A feladatokat kifejezetten az Intellij IDEA-ban való használatra tervezték.
További feladatok az Intellij Idea programban |
1 |
1. Osztás nullával Hozzon létre egy nyilvános static void divisionByZero()
metódust , ahol tetszőleges számot kell nullával osztania, és megjelenítenie kell a képernyőn az osztás eredményét. Tekerje a divisionByZero() metódushívást try..catch- be . Jelenítse meg a képernyőn a kivétel verem nyomkövetését a kivétel.printStackTrace() metódus használatával .
|
2 |
2. Visszaszámlálás 10-től 0-ig
Írjon egy ciklust a visszaszámláláshoz 10-től 0-ig. Használja a Thread.sleep(100) -t a késleltetéshez;
Tekerje az alváshívást egy try..catch -be . |
3 |
3. Csomagoljon egy metódust try..catch-be
Számok olvasása a billentyűzetről. Írjon egy kódot a számok billentyűzetről történő olvasásához egy külön readData() metódusba .
Csomagolja be a metódus teljes törzsét (a readData() metóduson belüli teljes kódot, kivéve a lista deklarációját, ahol a számok tárolódnak) egy try..catch formátumba .
Ha a felhasználó szám beírása helyett valamilyen szöveget ír be, a módszernek fel kell fognia a kivételt, és megjelenítenie kell a képernyőn az összes korábban beírt számot.
Számok megjelenítése a képernyőn. Minden számnak új sorban kell lennie. A számsorrendnek olyannak kell lennie, mint a bevitelnél. |
4 |
4. Dátum konverter
Olvasson be a billentyűzetről egy dátumot «2013.08.18.» formátumban.
Jelenítse meg a képernyőn azt a dátumot «2013. AUG. 18.» formában.
Használja a Date és SimpleDateFormat objektumokat . |
5 |
5. Magánhangzók és mássalhangzók
Írjon programot, amely beolvassa a sorokat a billentyűzetről!
A programnak két karakterláncot kell megjelenítenie a képernyőn:
1) az első karakterlánc magánhangzókat tartalmazzon
2) a második karakterlánc mássalhangzókat és írásjeleket tartalmazzon a beírt szövegből.
A karaktereket szóközzel válassza el.
Példa bemenet: Stop look listen Példa kimenet: oooie
stplklstn |
6 |
6. A Piroska meséje
1. Öt osztály van: Piroska, nagymama, pogácsa, favágó, farkas. 2. Minden osztálynak két ArrayList
típusú mezője van : killed és ate. 3. A szükséges tárgyak már elkészültek (búra, nagymama, ...). 4. Hozza létre a megfelelő kapcsolatot (ki evett és ölt meg kit), hogy megkapja a „Piroska” logikáját.
|
7 |
7. Statikus módosítások mozgatása
Mozgassa a statikus módosítókat a kód fordításához. |
8 |
8. Számtömbök listája
Hozzon létre egy listát, amelynek elemei számtömbök. Adjon hozzá a listához öt objektumtömböt, amelyek hossza rendre 5, 2, 4, 7, 0. Töltse ki a tömböket bármilyen adattal, és jelenítse meg a képernyőn. |
9 |
9. Tíz macska
Hozzon létre egy Cat osztályt egy mezővel String name .
Hozzon létre egy szótárt Térkép<String, Cat> , adjon hozzá 10 macskát a «Név» - «Cat» modellhez. Szerezzen be egy névkészletet
a térképről , és jelenítse meg a készletet a képernyőn. |
- Azok a feladatok a zöldeknek szóltak. Hozzáadtam a nagyobb bonyolultságú bónuszfeladatokat. Csak felső fegyverekhez.
Bónusz feladatok |
1 |
1. A program nem fordul le és nem fut. Javítsd meg. Feladat: A program olvasson be a billentyűzetről két fájlnevet, és másolja az első fájlt a második név által megadott helyre. |
2 |
2. Adjon hozzá új funkciókat a programhoz. Régi feladat: A programnak be kell olvasnia a billentyűzetről két fájlnevet, és át kell másolnia az első fájlt a második név által megadott helyre. Új feladat: A programnak be kell olvasnia a billentyűzetről két fájlnevet, és át kell másolnia az első fájlt a második név által megadott helyre.
Ha a megadott nevű fájl (amelyet másolni fog) nem létezik, a programnak a képernyőn a „Fájl nem létezik” üzenetet kell megjelenítenie, és meg kell próbálnia még egyszer beolvasni a fájlnevet a konzolról, mielőtt elolvasná a a második (cél) fájl neve. |
3 |
3. Algoritmus tanulása és gyakorlása.
Olvassa el a billentyűzetről a szavak és számok listáját. Jelenítse meg a képernyőn a szavakat növekvő, a számokat pedig csökkenő sorrendben.
Példabevitel: Cseresznye
1
bab
3
alma
2
0
görögdinnye
Példa kimenet: alma
3
bab
2
cseresznye
1
0
görögdinnye
|
GO TO FULL VERSION