Miałem nadzieję zaimplementować jeden "ExceptionController" do obsługi wyjątków, które są zgłaszane podczas wykonywania moich innych metod kontrolerów. Nie określiłem żadnego HandlerExceptionResolver w moim kontekście aplikacji, więc zgodnie z API documentation należy uruchomić AnnotationMethodHandlerExceptionResolver. Zweryfikowałem go jako taki w źródle. Dlaczego więc następujące czynności nie działają?Problemy z implementacją wyjątku sterownika kontrolera Spring 3
@Controller
public class ExceptionController {
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException ex) {
// Do some stuff
log.error(logging stuff)
return myModelAndView;
}
}
@Controller
public class AnotherController {
@RequestMapping(value="/nullpointerpath")
public String throwNullPointer() {
throw new NullPointerException();
}
}
widzę w dziennikach debugowania że trzy domyślne koparki Wyjątkiem są zadawane do obsługi wyjątku, ale nic się nie dzieje i widzę „DispatcherServlet - Nie można ukończyć żądania”. Następnie użytkownik wyświetla komunikat stacktrace i błąd wewnętrzny 500.
To wydawało się być problemem. – predhme
@predhme, naprawiłam twój problem? Mam przykład podobny do twojego, a metoda @ExceptionHandler jest wywoływana tylko wtedy, gdy wyjątek jest generowany z tego samego kontrolera. – curthipster
Zauważyłem to również później. Sądzę, że najważniejszą rzeczą było dla mnie skonfigurowanie strony 500 i 404, tak, że jeśli czegoś nie złapałem, użytkownik nie otrzymał śladu stosu. – predhme