10.eloadas Flashcards

(11 cards)

1
Q

KIVÉTEL ÉRTELMEZÉSE

A

A kivétel egy kivételes esemény, amely a program futása közben lép fel, megszakítva a normál végrehajtást.
A Java-ban a kivétel egy objektum, amely automatikusan vagy programozó által jön létre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

KIVÉTELKEZELÉS UTASÍTÁSAI

A
  • try – védett kód (blokk) kijelölése
  • throw – kivétel dobása, generálása
  • catch – kivétel elkapása, a blokkban definiált utasítások végrehajtása
  • finally – végül, akár volt kivétel, akár nem volt, lefut
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

KIVÉTELDOBÁS

A

A kivétel objektum dobása a throw kulcsszóval történik.

throw new ArithmeticException(“Hibás osztás”);

Ha egy metódusban hiba történik, a program létrehoz egy kivételobjektumot és átadja a futási környezetnek.

A kivételobjektum tartalmaz:

  • A hiba típusát (Exception típus)
  • A hibaüzenetet (String message)
  • A program állapotát a hiba pillanatában (call stack)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hívási verem (Call Stack)

A

A metódushívások rendezett listája.

A JVM visszafelé keres a metódusok között egy megfelelő kivételkezelőt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kivételkezelő

A

A kivételt a catch blokk kapja el.

A catch típusa illeszkednie kell a dobott kivétel típusára (vagy annak ősére).

Több catch blokk is megadható – sorrend számít!

try {
// veszélyes kód
} catch (IOException e) {
// kivételkezelés
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kivételtípusok

A

A. Ellenőrzött kivételek (Checked Exceptions)

Fordítási időben ellenőrizve, kezelni kötelező (pl. IOException).
Ha nem kezeljük, fordítási hiba történik.

B. Nem ellenőrzött kivételek (Unchecked Exceptions)

Futási időben keletkeznek, kezelni nem kötelező (pl. NullPointerException, ArrayIndexOutOfBoundsException).

C. Saját kivételek
Az Exception osztályból származtathatók:
class SajátHiba extends Exception {
public SajátHiba(String üzenet) {
super(üzenet);
}
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

A kivétel keletkezésének módjai

A
  1. Implicit – Java API hozza létre (pl. null pointer, fájlhiba)
  2. Explicit – programozó throw utasítással dobja
  3. Aszinkron – másik szálon bekövetkező kivétel
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Kivételkezelés folyamata

A
  1. Kivétel keletkezik a try blokkban.
  2. A program megállítja a try blokk végrehajtását.
  3. A JVM megkeresi a megfelelő catch blokkot:
  • A hívási verem (call stack) visszafelé keresi a kezelőt.
  • Ha talál illeszkedő catch blokkot, végrehajtja.
  1. Ha nincs kezelő, a program leáll, és a hiba kiíródik.
  2. A finally blokk mindig lefut, akár volt hiba, akár nem.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

finally blokk

A

Mindig lefut, kivételtől függetlenül.

Nem tartalmazhat paramétert.

Használható erőforrások lezárására (fájl, adatbázis stb.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Fontos szabályok

A

✅ try blokk kötelező, catch vagy finally nélkül nem használható.

✅ catch blokkok sorrendje fontos – specifikusabb típusok legyenek előbb!

✅ finally blokk mindig lefut, még akkor is, ha return van a try-ban vagy catch-ben.

❌ Ne kapj el mindent (catch (Exception e)), csak amit tényleg kezelni tudsz!

⚠ Ellenőrzött kivételeket mindig kezelni kell (vagy try-catch, vagy throws).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Mikor érdemes kivételt használni?

A

✔ Várt hibák (pl. fájl nem található, érvénytelen bemenet).

✔ Erőforrás-kezelés (pl. fájl, adatbázis lezárása finally-ben).

❌ Normális programfolyamat részeként ne használj kivételt!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly