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);
}
}