Назад к вопросам
Junior
70
questionbank

Как бы вы выбросили исключения выше в стек вызовов?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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);
    }
}