Sobes.tech
Junior

Hogyan dobnád feljebb kivételt a hívási veremben?

sobes.tech MI

Válasz az MI-től

A throw kulcsszót használom, hogy újra dobjam vagy új kivételt hozzak létre.

public void method1() throws CustomException {
    try {
        // Valamilyen kód, ami dobhat AnotherException-t
        method2();
    } catch (AnotherException e) {
        // Elkapjuk az AnotherException-t
        // Beburkoljuk CustomException-be és feljebb dobjuk
        throw new CustomException("Hiba a Method2-ben: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Valamilyen kód, ami kivételt dobhat
    throw new AnotherException("Valami rosszul sült el a Method2-ben");
}

class CustomException extends Exception {
    public CustomException(String message, Throwable cause) {
        super(message, cause);
    }
}

class AnotherException extends Exception {
    public AnotherException(String message) {
        super(message);
    }
}

Vagy, ha csak az elkapott kivételt akarod tovább dobni anélkül, hogy újat hoznál létre:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Naplózás vagy más műveletek
        // Ugyanazt a kivételt dobjuk tovább
        throw e;
    }
}

public void methodB() throws SomeException {
    // Kód, ami dobhat SomeException-t
    throw new SomeException("Hiba a MethodB-ben");
}

class SomeException extends Exception {
    public SomeException(String message) {
        super(message);
    }
}