8-modul · 9-dars: Exception handling · Interceptor

Daraja: Ilg'or

Exception handling · Interceptor. Spring Framework bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Exception handling · Interceptor tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Spring MVCda xatoni controller ichidagi @ExceptionHandler, umumiy @ControllerAdvice yoki @RestControllerAdvice bilan boshqarish mumkin. @ResponseStatus exception yoki handlerga HTTP status beradi. Exception turini biznes ma'noga aylantiring: topilmagan resurs 404, validation 400, ruxsat yetishmasligi 403; hamma xatoga 200 qaytarmang. Filter Servlet zanjirida DispatcherServletdan tashqarida ham ishlaydi. HandlerInterceptor esa MVC handler atrofiga preHandle, postHandle va afterCompletion qo'shadi. Shuning uchun controller advice barcha filter yoki security xatolarini ushlaydi deb bo'lmaydi. AuthenticationEntryPoint va AccessDeniedHandler kabi maxsus mexanizmlar kerak bo'lishi mumkin. Clientga barqaror xato kodi, tushunarli xabar va zarur bo'lsa trace-id qaytaring. Stack trace, SQL, credential va foydalanuvchi shaxsiy qiymatlari server logida ham ehtiyotkor saqlanadi. ProblemDetail zamonaviy HTTP xato modelidir. Xato handlerning o'zi ham test qilinishi, serializatsiya vaqtida yangi exception chiqarmasligi kerak.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/8-module%28Spring%20Introduction%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-framework/reference/)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

@org.springframework.web.bind.annotation.RestControllerAdvice
class Errors {
  @org.springframework.web.bind.annotation.ExceptionHandler(IllegalArgumentException.class)
  org.springframework.http.ProblemDetail badInput() {
    return org.springframework.http.ProblemDetail.forStatusAndDetail(400, "Kirish qiymatini tekshiring");
  }
}

Keng tarqalgan xatolar

Mashqlar

Teglar: nazariya, modul-08, pdp

Interaktiv ko'rinish (viktorina, izohlar, tarix)