Skip to main content
SoException은 Sonamu의 λͺ¨λ“  μ˜ˆμ™Έ ν΄λž˜μŠ€κ°€ μƒμ†ν•˜λŠ” 좔상 κΈ°λ³Έ ν΄λž˜μŠ€μž…λ‹ˆλ‹€. HTTP μƒνƒœ μ½”λ“œμ™€ λ©”μ‹œμ§€, μΆ”κ°€ νŽ˜μ΄λ‘œλ“œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

νƒ€μž… μ •μ˜

속성

statusCode

HTTP 응닡 μƒνƒœ μ½”λ“œμž…λ‹ˆλ‹€. μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ Fastifyκ°€ 이 μ½”λ“œλ‘œ μ‘λ‹΅ν•©λ‹ˆλ‹€.

message

μ˜ˆμ™Έ λ©”μ‹œμ§€μž…λ‹ˆλ‹€. LocalizedString νƒ€μž…μœΌλ‘œ, Sonamu의 λ‹€κ΅­μ–΄ 지원 μ‹œμŠ€ν…œμ„ 톡해 μ§€μ—­ν™”λœ λ¬Έμžμ—΄μ„ μ „λ‹¬ν•©λ‹ˆλ‹€.

payload

선택적 μΆ”κ°€ λ°μ΄ν„°μž…λ‹ˆλ‹€. μ˜ˆμ™Έμ™€ κ΄€λ ¨λœ 상세 정보λ₯Ό 전달할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ‚¬μš© μ˜ˆμ‹œ:

μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜

isSoException()

μ£Όμ–΄μ§„ 값이 SoException μΈμŠ€ν„΄μŠ€μΈμ§€ ν™•μΈν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

λ‚΄μž₯ μ˜ˆμ™Έ 클래슀

SonamuλŠ” 일반적인 HTTP 였λ₯˜ 상황을 μœ„ν•œ μ—¬λŸ¬ λ‚΄μž₯ μ˜ˆμ™Έ 클래슀λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

BadRequestException (400)

잘λͺ»λœ λ§€κ°œλ³€μˆ˜ λ“± μš”μ²­μ‚¬ν•­μ— λ¬Έμ œκ°€ μžˆλŠ” 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

UnauthorizedException (401)

둜그인이 ν•„μš”ν•œ 경우 λ‘œκ·Έμ•„μ›ƒ μƒνƒœμ΄κ±°λ‚˜ μ ‘κ·Ό κΆŒν•œμ΄ μ—†λŠ” μš”μ²­ μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

NotFoundException (404)

μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ ˆμ½”λ“œμ— μ ‘κ·Ό μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

InternalServerErrorException (500)

λ‚΄λΆ€ 처리 둜직(μ™ΈλΆ€ API 호좜 포함) 였λ₯˜ λ°œμƒ μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

ServiceUnavailableException (503)

ν˜„μž¬ μƒνƒœμ—μ„œ μ²˜λ¦¬κ°€ λΆˆκ°€λŠ₯ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

TargetNotFoundException (520)

μž‘μ—… λŒ€μƒμ΄ μ—†λŠ” 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

AlreadyProcessedException (541)

이미 처리된 μš”μ²­μ— λŒ€ν•œ 쀑볡 처리 μ‹œλ„ μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

DuplicateRowException (542)

쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” 경우 쀑볡 μš”μ²­ μ‹œ μ‚¬μš©ν•©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

μ˜ˆμ™Έ 처리 흐름

SonamuλŠ” λ°œμƒν•œ μ˜ˆμ™Έλ₯Ό μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬ μ μ ˆν•œ HTTP μ‘λ‹΅μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€:
payloadκ°€ μžˆλŠ” 경우:

μ˜ˆμ™Έ vs Guards

κ°„λ‹¨ν•œ 인증 체크의 경우 Guardsλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€:

κ΄€λ ¨ λ¬Έμ„œ