๐Ÿ“Œ Spring ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‹ค์Šต (@ExceptionHandler & @ControllerAdvice)

My Pale Blue Dotยท2025๋…„ 4์›” 24์ผ
0

SPRING

๋ชฉ๋ก ๋ณด๊ธฐ
10/36
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-04-24


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

1๏ธโƒฃ @ExceptionHandler ๊ฐœ๋…

โœ… ์„ค๋ช…

  • @ExceptionHandler๋Š” ์Šคํ”„๋ง MVC์—์„œ ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜.
  • ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ ํƒ€์ž…์„ ์ง€์ •ํ•ด๋‘๊ณ , ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋จ.
  • ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ View ์ด๋ฆ„์„ ๋ฆฌํ„ดํ•˜์—ฌ ์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ์ด๋™.

2๏ธโƒฃ ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ณ„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์˜ˆ์ œ

@ExceptionHandler(FileNotFoundException.class)
public String fileNotFoundExceptionHandler(Exception e, Model model) {
    log.error("error: " + e);  // ์˜ˆ์™ธ ๋กœ๊ทธ ๊ธฐ๋ก
    return "except/error";     // ์—๋Ÿฌ ํŽ˜์ด์ง€๋กœ ํฌ์›Œ๋”ฉ
}
  • ํŠน์ • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹.
  • ์ปจํŠธ๋กค๋Ÿฌ๋งˆ๋‹ค ๋ณ„๋„๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๋ฒˆ๊ฑฐ๋กœ์›€.

3๏ธโƒฃ ๋ชจ๋“  ์˜ˆ์™ธ ํ†ตํ•ฉ ์ฒ˜๋ฆฌ (์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์œ„)

@ExceptionHandler(Exception.class)
public String exceptionHandler(Exception e, Model model) {
    log.error("error: " + e);
    return "except/error";
}
  • ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋กœ ์ฒ˜๋ฆฌ.
  • ๋‹จ, ์ด ๋ฐฉ๋ฒ•๋„ ์ปจํŠธ๋กค๋Ÿฌ๋ณ„ ๋ฐ˜๋ณต ๋ฐœ์ƒ.

4๏ธโƒฃ ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (@ControllerAdvice)

@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String allExceptionHandler(Exception e, Model model) {
        log.info("GlobalExceptionHandler's error : " + e);
        model.addAttribute("ex", e);
        return "global_error";
    }
}
  • ํ”„๋กœ์ ํŠธ ์ „์ฒด ์˜ˆ์™ธ๋ฅผ ํ•œ ๊ณณ์—์„œ ์ผ๊ด„ ์ฒ˜๋ฆฌ.
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ํ†ตํ•ฉํ•˜๊ณ , ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.
  • ์‹ค๋ฌด์—์„œ๋Š” ์ฃผ๋กœ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉ.

5๏ธโƒฃ JSP ์—๋Ÿฌ ํŽ˜์ด์ง€ ์˜ˆ์‹œ

<%@ page isErrorPage="true" %>
<h1>ERROR PAGE</h1>
EXCEPTION : <%= exception %>   <!-- ์˜ˆ์™ธ ๊ฐ์ฒด ์ถœ๋ ฅ -->
  • isErrorPage="true" ์„ค์ • ์‹œ, JSP ๋‚ด์—์„œ exception ๊ฐ์ฒด ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ๊ฐ€๊ณตํ•ด ์ถœ๋ ฅ ๊ฐ€๋Šฅ.

๐Ÿ”ฅ ์ •๋ฆฌ

  • ๊ตญ์†Œ์  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ์ปจํŠธ๋กค๋Ÿฌ๋งˆ๋‹ค ์˜ˆ์™ธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉ.
  • ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์˜ˆ์™ธ๋ฅผ ์ผ๊ด„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ.
  • ์‹ค๋ฌด ํŒ:
    • ๊ณตํ†ต ์˜ˆ์™ธ๋Š” @ControllerAdvice๋กœ ์ฒ˜๋ฆฌ.
    • ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ๋งŒ์˜ ๋กœ์ง์  ์˜ˆ์™ธ๋Š” @ExceptionHandler๋กœ ๋ณ„๋„ ์ฒ˜๋ฆฌ.
  • ๋ฐ˜๋“œ์‹œ ๋กœ๊น…์„ ํ†ตํ•ด ์˜ˆ์™ธ ์ถ”์  ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•  ๊ฒƒ.

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€