1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

예외 처리하기
🌱 SPRING/스프링 인 액션

예외 처리하기

2018. 7. 31. 13:40

예외 처리하기

 몇 가지 스프링의 예외들은 자동으로 명시된 HTTP 상태 코드로 매핑된다.

 HTTP 상태 코드로 매핑하기 위해 예외에는 @ResponseStatus 애너테이션을 붙여줄 수 있다.

 예외 처리를 위한 메서드에는 @ExceptionHandler 애너테이션을 붙여줄 수 있다.


예외를 HTTP 상태 코드에 매핑하기

 스프링 예외

 상태 코드

 BindException

 400 - Bad Request

 ConversionNotSupportedException

 500 - Internal Server Error

 HttpMediaTypeNotAcceptableException

 406 - Not Acceptable

 HttpMediaTypeNotSupportedException

 415 - Unsupported Media Type

 HttpMessageNotReadableException

 400 - Bad Request

 HttpRequestMethodNotSupportedException

 405 - Method Not Allowed

 MethodArgumentNotValidException

 400 - Bad Request

 MissingServletRequestParameterException

 400 - Bad Request

 MissingServletRequestPartException

 400 - Bad Request

 NoSuchRequestHandlingMethodException

 404 - Not Found

 TypeMismatchException

 400 - Bad Request


이 외에 애플리케이션 예외등에는 @ResponseStatus 어노테이션을 통해 HTTP 상태 코드와 매핑할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
@RequestMapping(value="/{spittleId}", method=RequestMethod.GET)
public String spittle ( @PathVariable("spittleId") long spittleId, Model model )
{
    Spittle spittle = spittleRepository.findOne(spittleId);
    if (spittleId == null)
    {
        throw new SpittleNotFoundException();
    }
    model.addAttribute(spittle);
    return "spittle";
}
Colored by Color Scripter
cs


Spittle은 spittleRepository로부터 id를 이용해 받아온 객체이다.

만약, spittleRepository로부터 아무런 값을 받아오지 못하면 SpittleNotFoundException이 발생한다.


이 때, SpittleNotFoundException이 HTTP 상태 코드 404에 매핑시키려면 어떻게 해야할까?


1
2
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="Spittle Not Found!")
public class SpittleNotFoundException extends RuntimeException { }
cs


@ResponseStatus 어노테이션을 적용해 이제부턴 SpittleNotFoundException은 "Spittle Not Found!"를 원인으로 한 404 상태 코드를 가진다.


 


 이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다.

일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글

스프링 시큐리티 ② : 상세 설정하기  (1) 2018.09.16
스프링 시큐리티 ① : 기본 설정  (0) 2018.08.01
멀티 파트 폼 데이터  (0) 2018.06.13
자바 설정으로 Filter 등록하기  (1) 2018.06.13
DispatcherServlet 설정하기  (0) 2018.06.13
    '🌱 SPRING/스프링 인 액션' 카테고리의 다른 글
    • 스프링 시큐리티 ② : 상세 설정하기
    • 스프링 시큐리티 ① : 기본 설정
    • 멀티 파트 폼 데이터
    • 자바 설정으로 Filter 등록하기
    1HOON
    1HOON

    티스토리툴바