Widzę, że Guice i Spring używają AOP Alliance pod maską do przechwytywania metod i próbowałem dowiedzieć się, jak sprawić, by AOP Alliance przechwyciło i poradziło sobie z pewnymi wyjątkami, więc nie muszę pisanie tego samego kodu w kółko w każdym bloku catch
.AOP Exception Handling
Ale po zapoznaniu się grać, to nie wygląda AOP Alliance zapewnia jakikolwiek sposób do przechwytywania rzucane Throwable
S w taki sposób, że handler/Interceptor można zrobić kilka rzeczy (log wyjątek, etc.) i następnie ustalić, czy jakiekolwiek dalsze propagowanie wyjątku lub po prostu odzyskać z powrotem do następnego wiersza po wierszu, który zwrócił wyjątek:
HerpDerp hd = null;
if(hd == null)
throw new RuntimeException("Herpyl derp!");
Manny.pacquiao();
szukam mechanizmu obsługi wyjątków AOP, który przechwytywał RuntimeException
i użyj logiki biznesowej, aby zdecydować, czy chcesz ją dalej propagować, czy też odzyskać po zadzwonieniu pod numer Manny.pacquioa()
.
- Jeśli jest to po prostu niemożliwe, aby to zrobić w Javie, proszę dać mi znać
- Niezależnie od tego, czy jego możliwe, aby to zrobić w Javie, czy jest jakiś sposób aby przechwycić rzucony wyjątek z AOP Alliance lub czy muszę iść gdzie indziej. A jeśli muszę iść gdzieś indziej, gdzie? AspectJ?
Dzięki!
Thanks @Wim - jest oparte AOP obsługa wyjątków jak to nie jest możliwe w AOP Alliance? – IAmYourFaja
Nie sądzę. Jeśli zaznaczysz [wiosenne dokumenty] (http://static.springsource.org/spring/docs/3.1.1.RELEASE/spring-framework-reference/html/aop.html), pokaże to: 'Join point : punkt podczas wykonywania programu, taki jak wykonanie metody lub obsługa wyjątku. W Spring AOP, punkt sprzężenia zawsze reprezentuje wykonanie metody. " –
Czy [ConstructorInterceptor] (http://aopalliance.sourceforge.net/doc/org/aopalliance/intercept/ConstructorInterceptor.html) w jakiś sposób może zostać zhakowany w celu przechwycenia wyjątków (jak są zbudowane)? – IAmYourFaja