Sobes.tech
Junior

Как бихте изхвърлили изключения по-горе в стека на извикванията?

sobes.tech AI

Отговор от AI

Използвам ключовата дума throw, за да пренасоча или създам ново изключение.

public void method1() throws CustomException {
    try {
        // Някакъв код, който може да хвърли AnotherException
        method2();
    } catch (AnotherException e) {
        // Хващаме AnotherException
        // Гъвка го в CustomException и го хвърляме нагоре
        throw new CustomException("Грешка в Method2: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Някакъв код, който може да хвърли изключение
    throw new AnotherException("Нещо се обърка в Method2");
}

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

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

Или, ако просто искате да пренасочите уловеното изключение без да създавате ново:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Регистриране или други действия
        // Пренасочваме същото изключение нагоре
        throw e;
    }
}

public void methodB() throws SomeException {
    // Код, който може да хвърли SomeException
    throw new SomeException("Грешка в MethodB");
}

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