Sobes.tech
Junior

Ako by ste vyhodili výnimky vyššie v zásobníku volaní?

sobes.tech AI

Odpoveď od AI

Používam kľúčové slovo throw, aby som znovu vyhodil alebo vytvoril novú výnimku.

public void method1() throws CustomException {
    try {
        // Nejaký kód, ktorý môže vyhodiť AnotherException
        method2();
    } catch (AnotherException e) {
        // Zachytíme AnotherException
        // Zabalíme ho do CustomException a vyhodíme vyššie
        throw new CustomException("Chyba v Method2: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Nejaký kód, ktorý môže vyhodiť výnimku
    throw new AnotherException("Niečo sa pokazilo v Method2");
}

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

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

Alebo, ak chcete len znovu vyhodiť zachytenú výnimku bez jej vytvárania:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Logovanie alebo iné akcie
        // Znovu vyhodíme tú istú výnimku
        throw e;
    }
}

public void methodB() throws SomeException {
    // Kód, ktorý môže vyhodiť SomeException
    throw new SomeException("Chyba v MethodB");
}

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