Есть ли способ установить ExceptionHandler для класса и Exceptionclass? У меня есть такой класс:
public class MyServiceClass {
public void foo() {
//some Code...
throw new MyCustomRuntimeException();
//some more Code...
}
public void foo2() {
//some other Code...
throw new MyCustomRuntimeException();
//more other Code...
}
}
Теперь я хотел бы определить MyCustomRuntimeException - Handler примерно так:
private void exceptionHandler(MyCustomRuntimeException ex) {
//some Magic
}
Который должен использоваться каждый раз, когда в этом возникает MyCustomRuntimeException. класс. Я знаю, что могу использовать try, catch, наконец, в каждом методе, но есть ли решение для всего класса? Хотел бы пропустить шаблон
try {
...
} catch (MyCustomRuntimeException ex) {
exceptionHandler(ex);
}
Я использую Spring в этом приложении (без Spring Boot), но я ничего не нашел, как использовать @ExceptionHandler
для простого Spring. Я пробовал следующее (не работает):
EasyApplication
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class EasyApplication {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
FooBar foo = context.getBean(FooBar.class);
foo.doException();
}
}
FooBar
import org.springframework.web.bind.annotation.ExceptionHandler;
public class FooBar {
public void doException() {
throw new RuntimeException();
}
@ExceptionHandler(value = RuntimeException.class)
public void conflict() {
System.out.println("Exception handled!");
}
}
MyConfiguration
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfiguration {
@Bean(name = "FooBar")
public FooBar fooBar() {
return new FooBar();
}
}