250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- controller
- 리액트네이티브
- 프로젝트
- 프로그래머스
- 2025 프로그래머스 코드챌린지 2차 예선
- java
- 태그
- ReactNative
- expo
- 자바
- 코테
- 스프링
- javascript
- project
- node.js
- 티스토리챌린지
- map
- PCCE
- 리액트
- 자바스크립트
- 리액트 네이티브
- 코딩테스트
- 오블완
- 파이어베이스
- React
- 백엔드
- React Native
- firebase
- Spring
- 코딩
Archives
- Today
- Total
양갱의 개발 블로그
[IoT 빅데이터 응용 교육 과정]23307.04_2 10장 예외처리 본문
728x90
10장
https://thebook.io/080266/0346/
스프링 코딩 공작소: 10.1.2 예외 처리 방법의 종류
더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
thebook.io
예외 처리 방법의 종류
애너테이션 | 설명 |
@ResponseStatus | 예외 처리를 위한 가장 간단한 방법으로, 발생한 예외를 HTTP 상태 코드로 매핑시켜 응답하는 애너테이션입니다. |
@ExceptionHandler | 컨트롤러 안에 요청 처리 메서드에서 발생하는 오류나 예외를 직접 구체화하여 예외 처리를 위한 메서드에 선언하는 애너테이션입니다. |
@ControllerAdvice | 여러 컨트롤러에서 발생하는 오류의 공통점을 묶어 예외 처리를 위한 클래스에 선언하는 애너테이션입니다. |
HTTP 상태 코드
서버가 정상적으로 처리되었거나 오류가 발생했는지의 여부를 알려주는 상태 코드
응답 상태 코드 | 설명 | |
400 | BAD_REQUEST | 일반적인 요청 실패에 사용합니다. |
401 | UNAUTHORIZED | 클라이언트 인증에 문제가 있을 때 사용합니다. |
403 | FORBIDDEN | 인증 상태에 상관없이 액세스를 금지할 때 사용합니다. |
404 | NOT_FOUND | 요청 URI에 해당하는 리소스가 없을 때 사용합니다. |
405 | METHOD_NOT_ALLOWED | HTTP 메서드가 지원되지 않을 때 사용합니다. |
406 | NOT_ACCEPTABLE | 요청된 리소스 미디어 타입을 제공하지 못할 때 사용합니다. |
409 | CONFLICT | 리소스 상태에 위반되는 행위를 했을 때 사용합니다. |
412 | PRECONDITION_FAILED | 조건부 연산을 지원할 때 사용합니다. |
415 | UNSUPPORTED_MEDIA_TYPE | 요청 페이로드에 있는 미디어 타입이 처리되지 못했을 때 사용합니다. |
500 | INTERNAL_SERVER_ERROR | API가 잘못 작동할 때 사용합니다. |
@ResponseStatus를 이용한 예외 처리
HTTP 상태코드를 웹 브라우저에 전달
ResponseStatusExceptionResolver 클래스가 제공
// 예외 메서드에 사용할 때
@ResponseStatus(value=HttpStatus.상태 코드, reason="오류 설명")
@RequestMapping(...)
public String 메서드 이름() {
...
}
// 예외 클래스에 사용할 때
@ResponseStatus(value=HttpStatus.상태 코드, reason="오류 설명")
public class 클래스 이름 extends RuntimeException {
...
}
@ResponseStatus에서 사용하는 속성
요소 | 타입 | 설명 |
code | HttpStatus | 응답에 사용되는 상태 코드입니다. |
reason | String | 응답에 사용되는 이유를 설명합니다. |
value | HttpStatus | 코드에 대한 별칭입니다. |
reason 속성으로 자세한 설명을 설정할 수 있음
예시
package com.springmvc.chap10;
...
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@Controller
public class Example01Controller {
@ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="요청 실패했습니다.")
@GetMapping("/exam01")
public String requestMethod(Model model) {
System.out.println("chapter10_01 예제입니다");
model.addAttribute("data", "@ResponseStatus 처리 예제입니다");
return "webpage10_01";
}
}
@ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="요청 실패했습니다")
실습
실습
ExceptionHanndler
@ExceptionHandler(value={예외 클래스1.class[,예외 클래스2.class,...]})
public String 메서드 이름() {
...
}
@ExceptionHandler
public String 메서드 이름(예외 클래스 exp) {
...
}
요소 | 타입 | 설명 |
value | Class<? extends Throwable>[] | @ExceptionHandler가 선언된 메서드가 처리할 예외 클래스입니다. |
value속성이나 {} 생략 가능
@ResponseStatus없이 발생한 예외를 처리할 수 있음
@ControllerAdvice
컨트롤러의 요청 처리 메소드에서 예외가 발생할 경우 -> @ControllerAdvice
@ControllerAdvice(basePackages={"기본 패키지 이름, ...})
public class 클래스 이름 {
...
}
요소 | 타입 | 설명 |
annotations | Class<? extends Annotation>[] | 애너테이션의 배열입니다. |
assignableTypes | Class<?>[] | 클래스의 배열입니다. |
basePackageClasses | Class<?>[] | @ControllerAdvice가 적용된 클래스가 지원할 컨트롤러를 선택할 수 있는 패키지를 지정합니다. |
basePackages | String[] | 기본 패키지의 배열입니다. |
value | String[] | basePackages 속성의 별칭입니다. |
@ExceptionHandler, @ModelAttribute, @InitBinder가 선언된 메서드를 사용 가능
728x90
'IoT 빅데이터 응용 교육 과정_하계' 카테고리의 다른 글
[IoT 빅데이터 응용 교육 과정] 23.07.06 12장 다국어 처리 (0) | 2023.07.06 |
---|---|
[IoT 빅데이터 응용 교육 과정] 23.07.05 11장 로그 기록 (0) | 2023.07.05 |
[IoT 빅데이터 응용 교육과정]23.07.04 파일 업로드 (0) | 2023.07.04 |
[IoT 빅데이터 응용 교육과정] 23.07.03_1 8장 스프링 시큐리티 (0) | 2023.07.03 |
[IoT 빅데이터 응용 교육 과정] 웹 애플리케이션 (23.06.26_2) (0) | 2023.06.26 |