일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring Boot
- spring
- Thymeleaf
- transaction
- Greedy
- pointcut
- 알고리즘
- springdatajpa
- java
- Android
- Servlet
- 자바
- Exception
- JDBC
- db
- jpa
- 스프링 핵심 원리
- JPQL
- 스프링 핵심 기능
- kotlin
- QueryDSL
- 백준
- SpringBoot
- 김영한
- Proxy
- 인프런
- AOP
- 스프링
- http
- 그리디
- Today
- Total
목록ExceptionResolver (4)
개발자되기 프로젝트
1. ExceptionResolver 예외가 터지면 WAS까지 올라가서 500이 터진다. client가 허가되지 않은? 여튼 client가 잘못한경우도 exception이 발생하는 경우 500으로 처리된다. 하지만 이와같이 Client가 잘못 요청한 경우는 400으로 처리한는게 맞는 것 같다. 저번에 Naver API를 사용하면서 된통 당했었다 ㅋㅋㅋ 500으로 계속 응답이와서 서버 문제인 줄 알았떠니, 내가 잘못한 경우였다.. ㅜ 여튼 그래서 Client에서 잘못된 요청을 하는 경우 IllegalArgumentException을 터트릴 계획이다. IllegalArgumentException이 발생하는 경우는 500이 아니라 400으로 응답할 것이다. ExceptionResovler를 사용하면 예외 발생..
1. HTML 화면 오류 & API 오류 웹 브라우저에 HTML 화면을 제공할 때는 오류가 발생하면 BasicErrorController 사용이 편함 이때는 단순히 5xx, 4xx 관련된 오류 화면을 보여주면 된다. BasicErrorController 는 이런 메커니즘을 모두 구현해둠. 그런데 API는 각 시스템 마다 응답의 모양도 다르고, 스펙도 모두 다르다. 예외 상황에 단순히 오류 화면을 보여주는 것이 아니라, 예외에 따라서 각각 다른 데이터를 출력해야 할 수도 있다. 그리고 같은 예외라고해도 어떤 컨트롤러에서 발생했는가에 따라서 다른 예외 응답을 내려주어야 할 수 있다. 즉 세밀한 제어가 필요하다. 2. API예외 처리의 어려운 점. HandlerExceptionResolver 를 떠올려 보면 ..
1.예외를 ExceptionResolver에서 마무리하기 예외가 발생하면 WAS까지 예외가 던져지고, WAS에서 오류 페이지 정보를 찾아서 다시 /error 를 호출하는 과정은 생각해보면 너무 복잡하다. ExceptionResolver 를 활용하면 예외가 발생했을 때 이런 복잡한 과정 없이 ExceptionResolver에서 문제를 깔끔하게 해결- > BasicErrorController호출하는 등의 절차가 없음. 2. UserException 임의의 예외를 만듦 public class UserException extends RuntimeException{ public UserException() { super(); } public UserException(String message) { super(me..
예외가 발생해서 서블릿을 넘어 WAS까지 예외가 전달되면 HTTP 상태코드가 500으로 처리된다. 발생하는 예외에 따라서 400, 404 등등 다른 상태코드로 처리하고 싶은데? 오류 메시지, 형식등을 API마다 다르게 처리하고 싶다.?? 예를들어 IllegalArgumentException이 controller 밖으로 넘어가면???400으로 처리하고 싶음! 400 : Client가 범인임! 1. ApiExceptionController "/api/members/bad"로 넘어오면 IllegalArgumentException을 던지자. @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id){ if(i..