13 Nisan 2016 Çarşamba

Spring MVC ve Hata işleme (Exception Handling)


Projemizde run time esnasında çıkabilecek hataları daha açıklayıcı ve görsel anlamda da anlamsız kod karmaşasını ortadan kaldırmak için oluşabilecek hatalar için özel sayfalara yönlendirmeler yapalım dedik.
İnternette yine her zamanki gibi türkçe kaynak kıtlığı yaşıyoruz... derken https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc adresinden detaylı bilgileri alıyoruz...
İlgili kaynakta hataları yönetmenin farklı yollarından bahsediyor, kendi özel hata class'larıını da oluşturup, bağlı bulunduğu yerlerde o hatayı döndürebilirsiniz. Ben ise, daha global, tüm projeyi kapsayan bir hata yönetim şekliyle ilgileniyorum. 
Yani;
Size gerekli olan malzemeler,
Bir adet class -ki @ControllerAdvice annotation'ına sahip olacak
içerisindeki metodlar ise @ExceptionHandler
bir adet hatanın işlenip daha düzgün görüntülenmesi için yönlendirileceği error.jsp sayfası 
tabi mi context.xml tarafında da <mvc:annotation-driven/>'ın tanımlı olması
Benim Controller tarafında tek kullandığım kod;
@ControllerAdvice
class GlobalExceptionHandler {
  
    @ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {

        if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
            throw e;

        // Otherwise setup and send the user to a default error-view.
        ModelAndView mav = new ModelAndView();
        mav.addObject("exception", e);
        mav.addObject("url", req.getRequestURL());
        mav.setViewName("error");
        return mav;
    }
}
@ExceptionHandler(value = Exception.class) içerisindeki değeri "SQLException.class", value=HttpStatus.NOT_FOUND şeklinde girerek hata türlerine göre yeni metodlar da oluşturabilirsiniz.

Hiç yorum yok:

Yorum Gönder