2022-02-19 TIL
Try-Catch ์ ๋ต
๊ธฐ๋ณธ์ ์ผ๋ก ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ๋ก์ง์ ํ๋ฆ์ ๋๊ณ ์ข ๋ฃ์์ผ์ผ ํ๋ค. ๋ฌผ๋ก ์์ธ๋ ์๊ฒ ์ผ๋, ์ 1์์น์ ์ต๋ํ ์์ธ๋ฅผ ๋ฐ์์์ผ ์ข ๋ฃํ๋ ๊ฒ์ ์งํฅํ ๊ฒ.
try {
} catch (Exception e) {
e.printStackTrace();
}
์ ๊ฐ์ ์ฝ๋๊ฐ ์ง์ํด์ผ ํ๋ ํจํด์ด๋ค. ์ต์ํ์ ์์ฌ(?)์ผ๋ก e.printStackTrace()๋ฅผ ํธ์ถํ์ผ๋ ์ด๋ฏธ ์์ธ๊ฐ ๋ฐ์ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ค์ ๋ก์ง์ ์คํํ๊ฒ ๋๋ค. ์ด๋ฐ ์์ try-catch๋ ์ต๋ํ ์ง์ํด์ผ ํ๋ค. ํ์ง๋ง Checked Exception ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ์์ธ๋ก ๊ฐ์ธ์ผ ํ๋ฏ๋ก ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๋ถ๊ฐํผํ๊ฒ try-catch๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
try {
business login
} catch (Exception e) {
e.printStackTrace();
throw new xxXBusinessLogicException();
}
์ ์ฝ๋์์ ๋ณด๋ ๋ฐ์ ๊ฐ์ด try-catch๋ก ์์ธ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ, Exception() ๋ง๊ณ , ๋ ๊ตฌ์ฒด์ ์ธ ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ ์ข๋ค.
Controller ์์ธ ์ฒ๋ฆฌ
Controller์์ ๋ชจ๋ ์์ฒญ์ ๋ํ ๊ฐ ๊ฒ์ฆ์ ์งํํ๊ณ (Service layer์์ ์๋ชป๋ ๊ฐ์ด ์์ผ๋ฉด ์ ์์ ์ธ ์์ ์ ์งํํ๊ธฐ ์ด๋ ต๋ค) ์ด์์ด ์์ ์์ Service layer๋ฅผ ํธ์ถํด์ผ ํ๋ค. ๋ฌด์๋ณด๋ค Controller์ ์ฑ ์์ ๋คํ๊ณ ์์ง ์์ผ๋ฉด ๊ทธ ์ฑ ์์ ์์ฐ์ค๋ฝ๊ฒ ๋ค๋ฅธ layer์๊ฒ ์ ๊ฐ๋๋ฉฐ ์ด๋ ๊ฒ ๋๊ฒจ๋ฐ์ ์ฑ ์์ ์ฒ๋ฆฌํ๋ ๋ฐ ํฐ ๋น์ฉ์ด ๋ค๋ฟ๋๋ฌ, ์ ์ง ๋ณด์ ํ๋ ๋ฐ ๋ง์ ์ ์ฝ์ด ๋ฐ๋ฅธ๋ค. Controller์ ์ค์ํ ์ฑ ์ ์ค ํ๋๋ ์์ฒญ์ ๋ํ ๊ฐ ๊ฒ์ฆ์ด๋ค. ์คํ๋ง์ JSR 303 ๊ธฐ๋ฐ ์ ๋ ธํ ์ด์ ์ผ๋ก ๊ฐ ๊ฒ์ฆ์ ์ฝ๊ณ ์ผ๊ด์ฑ ์๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค. ๋ชจ๋ ์์ธ๋ @ControllerAdvice์ ์ ์ธ๋ @ExceptionHandler๊ฐ ํธ๋ค๋งํ๊ธฐ ๋๋ฌธ์ Controller๋ ์๊ธฐ layer์ ์์ธ๊น์ง ์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ ์์ธ๊ฐ ๋ฐ์ํ์ ๋, ๊ทธ๋ฅ ๋์ ธ๋ฒ๋ฆฌ๋ ํจํด์ผ๋ก ์ผ๊ด์ฑ ์๊ฒ ๊ฐ๋ฐํด์ผ ํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ