Coding Planet

์˜ˆ์™ธ ๋˜์ง€๊ธฐ/๋– ๋„˜๊ธฐ๊ธฐ -throws ๋ณธ๋ฌธ

๐Ÿ’ป Java Study/Java ์ด๋ก  ์ •๋ฆฌ

์˜ˆ์™ธ ๋˜์ง€๊ธฐ/๋– ๋„˜๊ธฐ๊ธฐ -throws

jhj.sharon 2023. 1. 26. 15:51
๋ฐ˜์‘ํ˜•

 

์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต try~catch~finally๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ ์ด๋‹ค.
์ด์™ธ์—๋„ throws๋ฅผ ํ†ตํ•ด ํŠน์ • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ ๊ฒฝ์šฐ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ catch๋ธ”๋Ÿญ์— ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„
์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

1. throws

  • try~catch ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์‹œ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค try~catch๋ฅผ ์‚ฌ์šฉํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ(์ผ๋ฐ˜์ ์œผ๋กœ main())์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์˜ˆ์™ธ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ๋กœ ์˜ˆ์™ธ๋ฅผ ๋„˜๊ธฐ๊ณ  ์ฑ…์ž„์„ ์ „๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • throws๋ฅผ ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์— ๋ช…์‹œํ•ด ์ฃผ์–ด์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค€๋‹ค
  • ๋˜ํ•œ, ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ๋ฅผ ํŠน์ • ๋ฉ”์„œ๋“œ์—์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ main() ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ try~catch ๋˜๋Š” try~catch~finally ๋ธ”๋Ÿญ์„ ์ž‘์„ฑํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ๋Š” throws ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • throws๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋– ๋„˜๊ธฐ๋Š” ์˜ˆ์•ฝ์–ด๋กœ ๋‘ ๋ฉ”์„œ๋“œ ์ค‘ ํ•œ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ try~catch๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์ด๋Ÿฌํ•œ try~catch๊ฐ€ ์—†๋‹ค๋Š” ์˜ˆ์™ธ๋ฅผ ๋‹จ์ˆœํžˆ ์ „๋‹ฌ๋งŒ ํ•œ ๊ฒƒ์œผ๋กœ ์˜ˆ์™ธ๊ฐ€ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. 

 

** throw์™€ throws๋Š” ๋‹ค๋ฅด๋‹ค! ๊ตฌ๋ถ„ํ• ๊ฒƒ

- throw๋Š” ์˜ˆ์™ธ๋ฅผ ๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฌธ๋ฒ•์ด๋‹ค -> throw new ๋ฐœ์ƒ์‹œํ‚ฌ์˜ˆ์™ธ;

 

 

2. ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ์‹คํ–‰ํ๋ฆ„

  • main() ๋ฉ”์†Œ๋“œ์—์„œ ์‹œ์ž‘ํ•ด์„œ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™: main() -> method()
  • try~catch ์˜ˆ์™ธ์ฒ˜๋ฆฌ์—์„œ๋Š” ๊ฐ๊ฐ์˜ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค try~catch ๋ธ”๋Ÿญ์„ ์ž‘์„ฑํ•ด์•ผํ•˜์ง€๋งŒ throws ๋ฐฉ์‹์—์„œ๋Š” ๋ฉ”์ธ์—์„œ๋งŒ try~catch๋ฌธ์„ ์ž‘์„ฑํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ์—์„œ๋Š”  throws Exception์„ ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ main()์œผ๋กœ ๋– ๋„˜๊ธด๋‹ค.

 

1) try~catch ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ์‹คํ–‰ํ๋ฆ„

public static void method(){
// ๋ช…๋ น์–ด: ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ๋„ ๊ฐ€๋Šฅ: ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์˜ค๋ฅ˜๋ฐœ์ƒ(์‚ฐ์ˆ ์˜ค๋ฅ˜: 5/0)

try{
   int r = 5/0;
   System.out.println("5๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์€ "+ r);

  }catch(ArithmeticException e){

   e.printStackTrace();
  }
}

public static void main(String[] args){
// ์œ„์—์„œ ์ •์˜ํ•œ method() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
}

 

2) throw ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ์‹คํ–‰ํ๋ฆ„

public static void method() throws Exception{
// ๋ช…๋ น์–ด: ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ๋„ ๊ฐ€๋Šฅ: ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์˜ค๋ฅ˜๋ฐœ์ƒ(์‚ฐ์ˆ ์˜ค๋ฅ˜: 5/0)

  //int r = 5/0;
  //System.out.println("5๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์€ "+ r);
  
  int r = 5/2;
  System.out.println("5๋ฅผ 2์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์€ "+ r);

}

public static void main(String[] args){
// ์œ„์—์„œ ์ •์˜ํ•œ method() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

try{
   method();
   System.out.println("method() ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด ์‹คํ–‰ ");

  }catch(ArithmeticException e){

   e.printStackTrace();
   System.out.println("method() ์˜ค๋ฅ˜๋ฐœ์ƒ ");
  }

}

 

 

 

3. throws ์‚ฌ์šฉํ˜•์‹

  • ์˜ˆ์™ธ ๋ฐœ์ƒ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”์†Œ๋“œ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜(์„ ์–ธ๋ถ€)์— throws ํ‚ค์›Œ๋“œ๋ฅผ ์ ๊ณ  ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ ์–ด์ค€๋‹ค.
  • ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ 21๊ฐœ ์ด์ƒ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋‚˜์—ดํ•œ๋‹ค.
  • ์ด๋•Œ exception ํด๋ž˜ ์Šค๋กœ ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค-> Exception์€ ๋ชจ๋“  ์˜ˆ์™ธ์˜ ์ตœ๊ณ  ์กฐ์ƒ์ด๋‹ค.
  • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ ๊ฐ„์œผํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—์„œ๋Š” try~catch๋ฌธ์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

 

 

 

 

 

โœจJDBC์—์„œ throws ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

 

1. throws ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์„ ์–ธํ•œ ๋ฉ”์†Œ๋“œ

 

 

 

2. ์œ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ main()๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

 

 

 

 

 

 

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•
Comments