TIL 37일차

Moon-Tree·2023년 2월 20일
0

◆ 오류 처리

  • HTTP 오류와 자바 오류는 다르다.
  • Spring boot에서는 모두 자바 예외로 취급한다.
  • 추가 설정이 필요하다.
  • DispatcherSevlet
    : 사용자로부터 들어오는 모든 요청을 적절한 위치로 배분 해주는 것이다.
  • 400번대는 401,403,404번을 필수 예외 처리하고 500번대는 모두 예외 처리 해야한다.

◆ 400번대 오류 : 클라이언트 에러 응답

  • 404번 Error
    - 처리 할 수 없는 주소가 포함되어 있을 경우
    - 처리할 수 있는 controller가 없어서 발생하는 오류

  • 403번 Error
    - 권한이 없음

  • 401번 Error
    - 권한은 있지만 자격이 없음 (ex: 로그인은 했지만 관리자는 아닌 것)

    		@ExceptionHandler(RequireLoginException.class)
    		public String unAuthorized(Exception ex) {
     			//forward : 주소는 유지하고 화면만 변경 되는 것
    			return "/WEB-INF/views/member/login.jsp";
        		//redirect : 주소와 화면이 모두 변경되는 것
    			//return "redirect:/member/login"; //재접속을 지시 
      
  • 405번 Error
    - 처리 가능 한 메서드가 없음

◆ 500번대 오류 : 서버 에러 응답

  • controller에 가서 이동한 후 실행하는 도중에 발생하는 오류

◆ @ControllerAdvice

  • 프로젝트 전체에 대한 catch 블록, catch를 모아놓은 컨트롤러이다.
  • 예외만 전문적으로 처리하는 컨트롤러(사용자가 부를 수 없다.)
  • @ControllerAdvice(annotations = {Controller.class})
    : @Controller에 대한 catch 블록

◆ @ExceprionHandler

  • 처리할 예외 클래스 구현
  • 마치 catch블록을 만들듯이 메서드를 구현
  • 컨트롤러처럼 특정 페이지를 보여주거나 Redirect 처리를 하는 등이 가능
  • 컨트롤러에서 제공받는 도구들을 모두 사용할 수 있다.

◆ 404 error setting 환경 설정

application.properties 에서 코드 아래 코드를 추가한다.
spring.mvc.throw-exception-if-no-handler-found=true
404번 발생 시 예외 처리한다.

spring.web.resources.add-mappings=false
리소스도 포함 시킨다. (자동을 아예 없앤다.)

#static resource path setting (리소스를 수동으로 설정하는 것)
spring.mvc.static-path-pattern=/static/
접속 주소에 /static/
이 적혀있을 경우 이미지이므로 예외 처리를 하지 않도록 하는 설정 해주는 것이다.

spring.web.resources.static-locations=classpath:/static/
접속 주소로 들어왔을 경우 실제로 들어갈 위치 /static/를 수동으로 설정해준다.

profile
Backend Developer

0개의 댓글