Sobes.tech
Junior

Jak wywołałbyś wyjątki wyżej w stosie wywołań?

sobes.tech AI

Odpowiedź od AI

Używam słowa kluczowego throw, aby ponownie rzucić lub utworzyć nowy wyjątek.

public void method1() throws CustomException {
    try {
        // Jakiś kod, który może rzucić AnotherException
        method2();
    } catch (AnotherException e) {
        // Przechwytujemy AnotherException
        // Opakowujemy go w CustomException i rzucamy wyżej
        throw new CustomException("Błąd w Method2: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Jakiś kod, który może rzucić wyjątek
    throw new AnotherException("Coś poszło nie tak w Method2");
}

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

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

Lub, jeśli chcesz po prostu przepuścić złapany wyjątek bez tworzenia nowego:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Logowanie lub inne działania
        // Przepuszczamy ten sam wyjątek wyżej w stosie
        throw e;
    }
}

public void methodB() throws SomeException {
    // Kod, który może rzucić SomeException
    throw new SomeException("Błąd w MethodB");
}

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