Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이단] Chapter09_API & Swagger & Annotation #49

Merged
merged 2 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions docs/chapter9/Ch09Keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 9주차 키워드 정리

---

## java의 Exception 종류들

JAVA에서 예외(`Exception`)란, 프로그램이 수행되는 중에 프로그램의 정상적인 실행 흐름을 방해하는 이벤트를 뜻한다.

> Oracle Docs 원문: An *exception* is an event, which occurs during the execution of a program,
> that disrupts the normal flow of the program's instructions.

실제 `Exception` 말고도 `Error`라는 것이 존재한다. `Error`는 프로그램의 실행이 중단될 정도로 심각한 문제를 뜻한다.
<br />반대로 말하면, `Exception`이 발생되어도 프로그램의 실행이 중단되지 않을 수 있다는 말이다. 이는 try -catch문 을 통해 구현할 수 있다.
<br />`Exception`의 계층 구조는 다음과 같다.

![image](https://github.com/SSUMC-6th/Spring_Boot_A/assets/67828333/6c5cae44-4e94-4968-812f-e180c3fe9094)

먼저, `Error`와 `Exception` 모두 `Throwable`을 상속함을 알 수 있다.

`Exception`을 상속하는 클래스들이 매우 많은데, 이 예외 클래스들은 두 분류로 나눌 수 있다. 위 그림을 참고하며 정의를 확인하자.

- Checked Exception: `RuntimeException`을 상속하지 않는 클래스
- Unchecked Exception: `RuntimeException`과, `RuntimeException`의 하위 클래스들

Checked Exception은 컴파일 시점에 check되는 예외 클래스들로, 반드시

1. 예외를 처리하는 try-catch문 코드 블록을 이용하거나
2. throws 키워드를 통해 예외를 던져야 한다.

위 방식을 이용하지 않을 경우 컴파일 에러가 발생한다.

ex) `IOException`

Unchecked Exception은 반대로 컴파일 시점에 명시적으로 check하지 않는 예외 클래스들로, 보통 런타임 시점에 발생한다. 이는 따로 try-catch문이나 throws 키워드를 이용하지 않아도 컴파일이 가능하다.

ex) `IllegalArgumentException`, `NullPointerException`

## @Valid

`@Valid` 어노테이션은 메소드 파라미터나 리턴 타입, 클래스 필드 등에 매핑되는 값을 검증하기 위해 사용하는 검증 어노테이션이다. 주로 요청 데이터가 백엔드 내에서 정해놓은 조건에 부합한지 확인하기 위해 사용한다.

보다 정확히는, `@Valid`는 “저거 유효한지 검증해!”라는 지시를 내리는 역할이며, 실제 검증을 하는 어노테이션은 별도로 있다.

ex) `@NotNull`, `@NotBlank`, `@Size`, `@Email`
14 changes: 14 additions & 0 deletions src/mission/chapter9/Ch09Mission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
회원가입 API 테스트
![image](https://github.com/bflykky/umc-workbook/assets/67828333/cfbac1a8-f85c-4ddc-8c4e-e028debd0766)

가게 등록 API 테스트
![image](https://github.com/bflykky/umc-workbook/assets/67828333/2afacf67-68fb-406d-a9bc-d0d31a9b7e49)

리뷰 등록 API 테스트
![image](https://github.com/bflykky/umc-workbook/assets/67828333/b32b2347-1b85-4648-a755-7017f5395f01)

미션 등록 API 테스트
![image](https://github.com/bflykky/umc-workbook/assets/67828333/5b265a8e-e010-4d68-9a8b-6fac760b3c0b)

새 미션 도전 목록 추가 API 테스트
![image](https://github.com/bflykky/umc-workbook/assets/67828333/49c25bca-3a51-42d2-b271-cf6e1e0c0967)