Sobes.tech
Junior

Jak byste vyhodili výjimky výše ve volacím zásobníku?

sobes.tech AI

Odpověď od AI

Používám klíčové slovo throw k opětovnému vyhození nebo vytvoření nové výjimky.

public void method1() throws CustomException {
    try {
        // Nějaký kód, který může vyvolat AnotherException
        method2();
    } catch (AnotherException e) {
        // Zachytíme AnotherException
        // Zabalíme jej do CustomException a vyhodíme výš
        throw new CustomException("Chyba v Method2: " + e.getMessage(), e);
    }
}

public void method2() throws AnotherException {
    // Nějaký kód, který může vyvolat výjimku
    throw new AnotherException("Něco se 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);
    }
}

Nebo, pokud chcete pouze znovu vyhodit zachycenou výjimku bez jejího vytváření:

public void methodA() throws SomeException {
    try {
        methodB();
    } catch (SomeException e) {
        // Logování nebo jiné akce
        // Znovu vyhodíme stejnou výjimku
        throw e;
    }
}

public void methodB() throws SomeException {
    // Kód, který může vyhodit SomeException
    throw new SomeException("Chyba v MethodB");
}

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