728x90

그 전부터 에러페이지 관련하여 한 번 정리하고 싶었는데, 이번에 마침 관련 업무를 할 일이 있었어서 나눠서 정리해보려 합니다.

어노태이션[@ResponseStatus]

예외 클래스 자체에 응답 상태 코드를 선언하여, web.xml의 에 매핑하는 방식이다.

예제

<예외 클래스>

@ResponseStatus(value = HttpStatus.FORBIDDEN)
public class ExampleForbiddenException extends RuntimeException {

	//…이하 생략…
}

위와 같이 예외 클래스에 응답코드를 선언해두고, 처리 로직에서 해당 예외를 던진다.

<처리 클래스>

	@GetMapping(value = "/example/error/throwExampleForbiddenException.do")
	public String throwException(final HttpServletResponse response) {
		if (true) {
			throw new ExampleForbiddenException("@ResponseStatus가 HttpStatus.FORBIDDEN으로 설정되어 있다.");
		}

		return "/example/fakeView"; // 여기는 실행되지 않는다.
	}

<web.xml>

	<error-page>
		<error-code>403</error-code>
		<location>/WEB-INF/jsp/example/error/forbiddenError.jsp</location>
	</error-page>​

장단점 설명

장점 :

  • 쉽고 간단하다. (예외에 응답 상태 코드를 지정하여, 바로 매핑된 에러 페이지를 바로 연결하면 끝)
  • ExceptionResolver가 없어도 동작한다.
  • ExceptionResolver의 종류에 따라서는 @ResponseStatus를 이용하기도 한다.

단점 : 로그 남기기 등의 추가 처리를 일원화하기 어렵다.

총평 : 오류가 나도 해당 정보를 확인할 수 없다는 점 때문에 단독으로 쓰일 일은 별로 없다.

참고

반응형

+ Recent posts