티스토리 뷰
예외처리 흐름도
- 기본적인 Exception 흐름도
- Controller에서 Exception 발생
- Tomcat으로 전달
- 에러 코드 별로, 지정된 Mapping으로 다시 Controller로 전달
- 전달된 페이지를 View
예외처리 방법
1. Exception을 직접 구현하여, mapping Controller로 진행
2. Spring이 자동으로, 에러코드별 html이 있다면 해당 html로 view 진행
3. API형식일 경우, json 형태로 (혹은 다른 방식으로) 에러 코드 및 메시지 전달
- 현재 프로젝트에 적용되어 있는 Exception 방식
- 1번 방법으로, Exception을 직접 구현하여 원하는 Html로 맵핑 작업
예외처리 구현
- WebServerFactoryCustomizer를 통한 구현 (@Override customize())
- /errors/custom 하위에 에러코드에 맞는 페이지 구현
@Component
public class CustomExceptionPage implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/errors/custom/404");
ErrorPage errorPage502 = new ErrorPage(HttpStatus.BAD_GATEWAY, "/errors/custom/502");
ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/errors/custom/500");
ErrorPage errorPageEx500 = new ErrorPage(RuntimeException.class, "/errors/custom/500");
factory.addErrorPages(errorPage404,errorPage500, errorPage502, errorPageEx500);
}
}
- Controller 구현
@Controller
@RequestMapping(value="/errors/custom")
@Slf4j
public class ExceptionPageController {
@GetMapping("500")
public String error500(HttpServletRequest request, HttpServletResponse response){
return "errors/custom/500";
}
@GetMapping("502")
public String error502(HttpServletRequest request, HttpServletResponse response){
return "errors/custom/502";
}
@GetMapping("404")
public String error404(HttpServletRequest request, HttpServletResponse response){
return "errors/custom/404";
}
}
참고)
- spring 으로 Exception을 처리할경우 "/template/errors" 하위에 5xx.html 같이 만들어 두면 spring이 해당 에러코드가 나올시 자동으로 맵핑해줌
- API의 경우, 직접 정의하여 Exception처리를 진행해야함 (코드값 , msg) -> AOP를 사용하면 편리해보임
아쉬운점
- Error에 대한 핸들링을 해보지못하고, 단순 에러처리 페이지에 대한 처리만 해놓은 것이 아쉽다.
- Exception에 대한 처리를 Exception을 만들어서 핸들링하고 어떤 에러가 나왔는지 로그를 기록해야하는데 이 부분을 자세히 로직을 생각하지 못한 부분이 아쉽다.
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
[기능구현#7] 파일 업로드 (0) | 2024.11.20 |
---|---|
[기능구현#5] AppConfig 구성 (0) | 2024.11.20 |
[기능구현#3] 로그인 기능 (0) | 2024.11.20 |
[트러블 슈팅] 로그인 인증 관련 문제 (0) | 2024.10.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- 타입변환
- stack
- bean
- 알고리즘
- 예외처리
- SQL
- Java
- 포트폴리오
- BFS
- 정렬
- JDBC
- 게시판
- 티스토리챌린지
- DFS
- 이진탐색
- 기술면접
- 게시판 프로젝트
- 클래스
- db
- HTML5
- JSON
- 코딩테스트
- 버블정렬
- Thymeleaf
- Spring
- 오블완
- 깊이우선탐색
- 검증
- 우선순위 큐
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함