Jelenlegi hely

18.2. Kivételek dobása

Bármelyik forráskód tud kivételt dobni, legyen az saját kódunk, egy csomagból származó, más által írt kód, bármi is annak a kimenete, a throws minden esetben jelen van. A Java platform számos osztályt nyújt a kivételek kezelésére, melyek egytől egyig leszármazottjai a Throwable osztálynak. Ezek az osztályok lehetővé teszik a programok számára, hogy megkülönböztessék az eltérő típusú kivételeket, melyek a program futása közben keletkeznek.

Saját magunk is létrehozhatunk speciális osztályokat a leendő problémák reprezentációjával. Fejlesztőként saját magunknak kell létrehoznunk az osztályt és elvégezni a szükséges beállításokat.

A throw használata

A kivétel dobásánál minden metódus a throw kulcsszót használja, melynek a következő formai követelménynek kell, hogy megfeleljen:

throw someThrowableObject;

Az alábbi pop metódus egy osztály által létrehozott közös veremobjektumból jön létre. A metódus eltávolítja a verem felső rekeszét és az objektummal tér vissza:

public Object pop() throws EmptyStackException {
    Object obj;
    if (size == 0) {
        throw new EmptyStackException();
    }
    obj = objectAt(SIZE - 1);
    setObjectAt(SIZE - 1, null);
    size--;
    return obj;
}

A pop metódus megnézi, van-e valami a veremben. Ha a verem üres (mérete 0), akkor a pop által létrejön egy új EmptyStackException objektumot (a java.util tagja) és eldobja azt. Ezek az objektumok a java.lang.Throwable osztály leszármazottjai kell, hogy legyenek, a fejezet későbbi része a kivétel osztályok létrehozásával foglalkozik.

A pop metódus deklarációja magában foglalja a throws kulcsszót. Az EmptyStackException kivételt a pop metódus nem kapja el, így a metódusnak a throws kulcsszót kell, hogy használja a deklarációhoz.