# ErrorCode๋ฅผ ์ด์šฉํ•œ ํŠน์ • ์˜ˆ์™ธ ๋ณต๊ตฌ
Study Repository

ErrorCode๋ฅผ ์ด์šฉํ•œ ํŠน์ • ์˜ˆ์™ธ ๋ณต๊ตฌ

by rlaehddnd0422

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์—๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์˜ˆ์™ธ ๋‚ด๋˜์ง€๊ธฐ : ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—๊ฒŒ throws ํ‚ค์›Œ๋“œ๋กœ ๋‚ด๋˜์ง€๋Š” ๋ฐฉ๋ฒ• ( main()์—์„œ๋„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ์˜ค๋ฅ˜ ์ถœ๋ ฅํ›„ ์ข…๋ฃŒ )

2. ์˜ˆ์™ธ ์ „ํ™˜ : catch ๋ฌธ์—์„œ Checked Exception -> Unchecked Exceptionํ•˜์—ฌ throw ํ‚ค์›Œ๋“œ๋กœ ๋˜์ง€๊ธฐ 

3. ์˜ˆ์™ธ ๋ณต๊ตฌ : catch ๋ฌธ์— try ๋ฌธ์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ๋ณต๊ตฌ ๋กœ์ง ๊ตฌํ˜„ํ•˜๊ธฐ

 

 

[JAVA] ์˜ˆ์™ธ(Exception) ์ฒ˜๋ฆฌ

ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰์ค‘ ์–ด๋–ค ์›์ธ์— ์˜ํ•ด์„œ ์˜ค์ž‘๋™์„ ํ•˜๊ฑฐ๋‚˜ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜๋Š” ์›์ธ์„ ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒ์‹œ์ 

rlaehddnd0422.tistory.com

 

์˜ˆ์™ธ ์ „ํ™˜๊ณผ ์˜ˆ์™ธ ๋ณต๊ตฌ๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ณ„์ธต์— ์ ‘๊ทผํ•ด DB์— Member๋ฅผ ์ €์žฅํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ, member_id๊ฐ€ ์ค‘๋ณต์ธ ๊ฒฝ์šฐ ์ž…๋ ฅํ•œ member_id๋’ค์— ๋ฌด์ž‘์œ„ ์ˆซ์ž 4์ž๋ฆฌ๋ฅผ ๋ถ™ํ˜€์„œ insert ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ค‘๋ณต ํ‚ค ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ

1. Service ๊ณ„์ธต์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง create ๋ฉ”์†Œ๋“œ์—์„œ repository ๊ณ„์ธต์— ์ ‘๊ทผํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ member save

-  Repository ๊ณ„์ธต์—์„œ ์ปค๋„ฅ์…˜ ์ƒ์„ฑ ํ›„ PreparedStatement์— ๋ฐ”์ธ๋”ฉ ํ›„ ์ฟผ๋ฆฌ ์‹คํ–‰

2. Repository ๊ณ„์ธต์—์„œ ์ฟผ๋ฆฌ ์‹คํ–‰ ์ค‘ SQLException ๋ฐœ์ƒ ์‹œ ์—๋Ÿฌ ์ฝ”๋“œ๊ฐ€ 23505์ธ ๊ฒฝ์šฐ ์ •์˜ํ•œ ์˜ˆ์™ธ throw

3. Service ๊ณ„์ธต์—์„œ Repository ๊ณ„์ธต์—์„œ throw ๋œ ์˜ˆ์™ธ๋ฅผ  catchํ•˜์—ฌ ๋ณต๊ตฌ ๋กœ์ง ์ˆ˜ํ–‰ 

4. ๋ณต๊ตฌ ๋กœ์ง ์ˆ˜ํ–‰ ํ›„ Repostiory ๊ณ„์ธต์œผ๋กœ ๋‹ค์‹œ ๋„˜์–ด๊ฐ€ finally ๊ตฌ๋ฌธ ์‹คํ–‰

 

์ฐธ๊ณ ๋กœ ๊ฐ™์€ ์˜ค๋ฅ˜์—ฌ๋„ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์ •์˜๋œ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”๋‰ด์–ผ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

TestCode

@Slf4j
public class TestServiceTest {

    MemberRepository memberRepository;
    TestService memberService;
    DataSource dataSource;

    @BeforeEach
    void init()
    {
        dataSource = new DriverManagerDataSource(URL,USERNAME, PASSWORD);
        memberRepository = new TestRepository(dataSource);
        memberService = new TestService(memberRepository);
    }

    @Test
    void duplicate()
    {
        memberService.create(new Member("myId",0));
        memberService.create(new Member("myId",0));
    }
}

<์ •๋ฆฌ>

  • SQL ErrorCode๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์™ธ ์ „ํ™˜์„ ํ†ตํ•ด SQLException์„ ํŠน์ • ๊ธฐ์ˆ ์— ์˜์กดํ•˜์ง€ ์•Š์€ ์ง์ ‘ ๋งŒ๋“  ์—์™ธ์ธ MyDuplicateKeyException์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Repository ๊ณ„์ธต์ด ์˜ˆ์™ธ๋ฅผ ๋ณ€ํ™˜ํ•ด์ค€ ๋•๋ถ„์— ์„œ๋น„์Šค ๊ณ„์ธต์€ ํŠน์ • ๊ธฐ์ˆ ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” MyDuplicateKeyException์„ ์‚ฌ์šฉํ•ด ์˜ˆ์™ธ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ , ์„œ๋น„์Šค ๊ณ„์ธต์˜ ์ˆœ์ˆ˜์„ฑ๋„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์˜ˆ์™ธ์ฝ”๋“œ๊ฐ€ ๋‹ฌ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ธ๋ฐ, ์ด ๋ฌธ์ œ๋Š” ์Šคํ”„๋ง์˜ ์˜ˆ์™ธ ์ถ”์ƒํ™”์™€ ์˜ˆ์™ธ ๋ณ€ํ™˜๊ธฐ๋ฅผ ์ด์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ์˜ˆ์™ธ ์ถ”์ƒํ™”์™€ ์˜ˆ์™ธ ๋ณ€ํ™˜๊ธฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

<์ฐธ๊ณ ์ž๋ฃŒ>

 

์Šคํ”„๋ง DB 1ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ•ต์‹ฌ ์›๋ฆฌ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ DB ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ ์˜ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜

www.inflearn.com

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ