Мне нужно выполнять метод каждый раз, когда генерируется определенное настраиваемое исключение. Выполненный код сообщит об исключении моему API. Класс исключения имеет параметр boolean
, который указывает, следует ли сообщать об исключении или нет. Предположим, у меня закодировано следующее исключение:
public MyException extends Exception {
private final String message;
private final int code;
private final boolean report;
public MyException(String message, int code, boolean report) {
this.message = message;
this.code = code;
this.report = report;
}
public void report() {
if(report) {
// Report some stuff
}
}
}
Когда выбрано MyException
, я хочу, чтобы код из report()
был выполнен. Я уже думал о вызове метода вручную:
try {
throw new MyException("Test", 1, true);
} catch(MyException e) {
e.report();
}
Но мне было интересно, можно ли вызвать функцию автоматически при выбросе исключения.
...
throw new MyExcepion("Test", 1, true); // Implicitlly calls report()
...
Обратите внимание, что я делаю не хочу вызывать его при создании экземпляра исключения, потому что могло произойти что-то вроде этого:
...
public MyException(String message, int code, boolean report) {
this.message = message;
this.code = code;
this.report = report;
report();
}
...
int var = 0;
MyException ex = new MyException("test", 1, true);
if (var != 0) {
throw ex;
}
// Here the exception would be reported but never thrown.
Возможно ли это вообще? Может ли это сделать сторонняя библиотека? Любая помощь приветствуется!