์ ์๋ฌ ์ฝ๋, ๊ฒ์ฆ ์ค๋ฅ, ์์ธ ์๋ต์ด๋ Swagger ์ค๋ฅ ์ค๋ช ์ ๋ฐ๊ฟ ๋ ์ฝ๋๋ค.
- ๊ณตํตยท๋๋ฉ์ธ ์ค๋ฅ๋
BaseErrorCode๋ฅผ ๊ตฌํํErrorCode๋๋{Domain}ErrorCodeenum์ผ๋ก ์ ์ํ๋ค. ๊ฐ ๊ฐ์ HTTP ์ํยท์ฝ๋ยท์ฌ์ฉ์ ๋ฉ์์ง๋ฅผ ํจ๊ป ๊ฒํ ํ๋ค. - ์์ธก ๊ฐ๋ฅํ ๋น์ฆ๋์ค ์คํจ๋
new CustomException(errorCode)๋ก ํํํ๋ค.GlobalExceptionHandler๊ฐ ์ด๋ฅผErrorDto๋ก ๋ณํํ๋ค. ํ ๋๋ฉ์ธ์ ์ ๋ ฅ ์ค๋ฅ์ ํน๋ณํ ๋ฉ์์ง๊ฐ ํ์ํ๋ฉด ๊ธฐ์กดTodoExceptionHandler,TagExceptionHandler์ฒ๋ผ ๋ฒ์๋ฅผ ์ ํํ handler๋ฅผ ํ์ธํ๋ค. - ์ค๋ฅ JSON์
timestamp,status,errorCode,message,path,traceId๋ฅผ ํฌํจํ๋ค. ์ ์ค๋ฅ์ ๋ณ๋ ์๋ต ๋ํผ๋ฅผ ๋ง๋ค์ง ์๋๋ค. ์ ์ ์๋ต์BaseResponse์ ํ์์ด ๋ค๋ฅด๋ค๋ ์ ๋ ์ ์งํ๋ค. - ์์ฒญ ๊ฒ์ฆ ์คํจ, ์ฝ์ ์ ์๋ ๋ณธ๋ฌธ, ์ง์ํ์ง ์๋ HTTP ๋ฉ์๋, ๋์์ฑ ์ถฉ๋ ๋ฑ์
GlobalExceptionHandler๊ฐ ์ด๋ฏธ ์ฒ๋ฆฌํ๋ค. ์ ๊ท handler๋ฅผ ์ถ๊ฐํ ๋ ๊ธฐ์กด handler์ ์ฐ์ ์์ยท์ค๋ณต ๋งคํ์ ํ์ธํ๋ค. - ์์ํ์ง ๋ชปํ ์ค๋ฅ๋ ์๋ฒ ๋ก๊ทธ์ Sentry์ ๋จ๊ธฐ๊ณ ํด๋ผ์ด์ธํธ์๋ ๋ด๋ถ ์์ธ์ ๋ฉ์์งยท์คํยท๋น๋ฐ๊ฐ์ ๋ ธ์ถํ์ง ์๋๋ค. ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๋น์ฆ๋์ค ์ค๋ฅ๋ ์ ์ ํ 4xx๋ฅผ ๋ฐํํ๊ณ 500์ผ๋ก ๋ญ๊ฐ์ง ์๋๋ค.
- ๊ฐ์ ๋๋ฉ์ธ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ์๋์ง ํ์ธํ๋ค. ์์ผ๋ฉด ํด๋น
{Domain}ErrorCode์ ์ถ๊ฐํ๊ณ , ์ฝ๋ ์๋ณ์ยท์ํยท๋ฉ์์ง๊ฐ ์๋ก ์ผ์นํ๋์ง ๊ฒํ ํ๋ค. - ์ค๋ฅ๊ฐ ๋๋ ์์น์์
CustomException์ ๋์ง๋ค. ์ ๋ ฅ ํ์ ๊ฒ์ฆ์ ๊ฐ๋ฅํ๋ฉด DTO์ Bean Validation์ ๋๊ณ , ์์ ๊ถยท์ํ ๊ฒ์ฆ์ Service ๋๋ Entity์ ์ฑ ์์ ๋๋ค. - ๊ธฐ์กด
...ControllerDocs์ ์๋ต ์ค๋ช ๊ณผ ์ค์ ErrorDto๋ฅผ ๋ง์ถ๋ค. ํด๋น API๊ฐ ์ค์ ๋ก ๋ด๋ ์ฝ๋๋ง ๋ฌธ์ํํ๊ณ , ์ฌ์ฉํ์ง ์๋ enum ์ ์ฒด๋ฅผ ๊ธฐ๊ณ์ ์ผ๋ก ๋์ดํ์ง ์๋๋ค. - ๋ก๊ทธ์๋ ์ค๋ฅ ์ฝ๋ยท๊ฒฝ๋กยท
traceId์ฒ๋ผ ์ง๋จ์ ํ์ํ ์ ๋ณด๋ง ๋จ๊ธด๋ค. ํ ํฐยท๋น๋ฐ๋ฒํธยท๊ฐ์ธ์ ๋ณด๋ ์์ฒญ ๋ณธ๋ฌธ ์ ์ฒด๋ฅผ ๊ธฐ๋กํ์ง ์๋๋ค.
์ฐธ๊ณ ๊ตฌํ: global/exception/GlobalExceptionHandler.java, global/exception/dto/ErrorDto.java, domain/tag/exception/TagErrorCode.java.