๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

 

Sims๋‹˜์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” file์„ ์ฝ์œผ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ํ•ด๋‹น file์ด ์—†๋Š” ๊ฒฝ์šฐ, 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ ๋“ฑ๋“ฑ.. ์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋“ค์ด ๋งŽ์ด ์žˆ์ฃ . ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ '์˜ˆ์™ธ ์ฒ˜๋ฆฌ'๋ผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

 

 ์˜ˆ์™ธ์ฒ˜๋ฆฌ != ๋ฒ„๊ทธ

 

์ž, ์ผ๋‹จ ์˜ค๋ฅ˜๋ฅผ ๋ถ„๋ฅ˜ํ•ด ๋ด…์‹œ๋‹ค. ์œ„์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ 2๊ฐ€์ง€ ์˜ค๋ฅ˜๋ฅผ ๋ง์”€๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋‘ ๋ฒˆ์งธ๋Š” 0์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์˜ค๋ฅ˜์ง€๋งŒ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ํŠน์ง•์ด ์กฐ๊ธˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ, ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ์˜ค๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์˜ˆ์ƒ์„ ํ•˜๊ณ  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์ฃ . ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 


๋‘ ๋ฒˆ์งธ, 0์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ์ฒ˜๋Ÿผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ '0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค'๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ๊ฑด๊ฐ€์š”? ์˜ˆ์ธก์ด ํž˜๋“ญ๋‹ˆ๋‹ค.

 

๋‹จ์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ฃ .

 

/* ์ฝ”๋“œ1 */
public void Exam() { 
	for(int i = 9; i >=0 ;i--) {
    		System.out.println(10 % i); 
    	}
}

 

(์ฝ”๋“œ1) ๊ณผ ๊ฐ™์ด  10์„ 9~0๊นŒ์ง€ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. ๊ทธ๋Ÿผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์— ๋‹ค์‹œ 'for(int i = 9; i >0 ;i++)'๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”?

์•„๋‹ˆ๋ฉด (์ฝ”๋“œ1) ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”? ๋‹น์—ฐํžˆ (์ฝ”๋“œ1)๋ฅผ i>0์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ฒŒ ๋ฌด์กฐ๊ฑด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ผ€์ด์Šค๋Š” '๋ฒ„๊ทธ'์— ๊ฐ€๊น๋‹ค๊ณ  ๋ณด์‹œ๋Š” ๊ฒƒ์ด ๋งž์ฃ .


๊ทธ๋ž˜์„œ ์ฒซ ๋ฒˆ์งธ ์ผ€์ด์Šค๋Š” '๊ฒ€์‚ฌ ์˜ˆ์™ธ'(- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ)๋ผ ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ผ€์ด์Šค๋Š” '๋น„ ๊ฒ€์‚ฌ ์˜ˆ์™ธ'(- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ณด๋‹จ ๋ฒ„๊ทธ์— ๊ฐ€๊นŒ์›Œ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒƒ)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. (๋ฌผ๋ก  ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ๋„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

 

 try~ catch๋ฌธ์„ ์‚ฌ์šฉํ•ด๋ณด์ž

 

์ž ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” try/catch ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.
try๋Š” ์˜ˆ์™ธ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ณณ์ด๊ณ  catch๋Š” try์—์„œ ๊ฐ์ง€ํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋ณด์‹œ๋Š” ๊ฒŒ ๋” ๋น ๋ฅผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์œ„ํ•ด์„œ '๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ'๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

/* ์ฝ”๋“œ2 */
public void A() { 
	try { 
    		System.out.println( 10 / 0 ); 
        	System.out.println( "๋" ); 
        } catch(Exception e) { 
        //catch(์–ด๋–ค ์˜ˆ์™ธ?) -Exception์€ ๋ชจ๋“  ์˜ˆ์™ธ 
        	System.out.println("์˜ˆ์™ธ ์ฒ˜๋ฆฌ"); //์ถœ๋ ฅ
   	} 
   }
    //์ตœ์ข… ์ถœ๋ ฅ : ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

 

(์ฝ”๋“œ2)์™€ ๊ฐ™์€ ๊ตฌ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 10์„ 0์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์žˆ์–ด์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์ฃ .
์ด์ฒ˜๋Ÿผ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ try{ } ์•ˆ์—๋‹ค ๊ฐ์‹ธ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ catch ๊ตฌ๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. try ๊ตฌ๋ฌธ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด catch ๋ฌธ์œผ๋กœ ๊ฐ€์„œ ํ•ด๋‹น ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฑฐ์ฃ .

 

ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 


(์ฝ”๋“œ2)์˜ ์ตœ์ข… ์ถœ๋ ฅ์€ "์˜ˆ์™ธ ์ฒ˜๋ฆฌ"์ž…๋‹ˆ๋‹ค. try ์•ˆ์— "๋"์ด๋ผ๋Š” ์ถœ๋ ฅ์ด ์žˆ์Œ์—๋„ ์ถœ๋ ฅํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ˆˆ์น˜์ฑ„์…จ๊ฒ ์ง€๋งŒ, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€์ ์—์„œ ๋ฐ”๋กœ catch ๋ถ€๋ถ„์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด์ฃ .

 

์ฆ‰, 10/0์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด catch ๊ตฌ๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฏ€๋กœ "๋"์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ์ถœ๋ ฅ์ด ๋˜์ง€ ์•Š์€ ๊ฒƒ์ด์ฃ .
๋˜ (์ฝ”๋“œ2)์˜ catch๋Š” Exception์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Exception์€ ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ ์˜ˆ์™ธ๋งˆ๋‹ค ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ˆ์ƒ๋˜๋Š” ์˜ˆ์™ธ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋„ฃ์–ด์„œ ๊ฐ๊ฐ ์•Œ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ์‹œ๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
(์ฝ”๋“œ3)๊ณผ ๊ฐ™์ด ๋ง์ด์ฃ .

 

/* ์ฝ”๋“œ3 */
public static void main(String[] args) { 
  int x,sum; 
  try { 
    	x = Integer.parseInt(args[0]); sum = x / 0; 
    }catch(ArithmeticException e) { // ์ฒซ๋ฒˆ์งธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ 
      	System.out.println("0์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์˜ˆ์™ธ๋ฐœ์ƒ"); 
    }catch(Exception e ) { // ๋‘๋ฒˆ์งธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ 
     	 System.out.println("args[0]๋ฅผ ์ฃผ์ง€์•Š์•„ ์˜ˆ์™ธ๋ฐœ์ƒ"); 
    } 
}

 

(์ฝ”๋“œ3)๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ, ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์˜ˆ์™ธ๋“ค์„ ์ฐพ์•„๋ณด์‹œ๊ณ  ์•Œ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•˜์‹ค ์ ์€ catch ๊ตฌ๋ฌธ๋„ ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ์—, ๋งจ ์ฒ˜์Œ๋ถ€ํ„ฐ exception(๋ชจ๋“  ์˜ˆ์™ธ)๋กœ ์„ ์–ธํ•ด ์ค€๋‹ค๋ฉด, ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ... ์„ ์–ธํ•œ catch ๋ฌธ์€ ์ˆ˜ํ–‰ํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


์ž, ๊ทธ๋Ÿผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด์•˜์œผ๋‹ˆ, ์˜ˆ์™ธ๋ฅผ ์ธ์œ„์ ์œผ๋กœ ๋ฐœ์ƒ์‹œ์ผœ ๋ณด์ฃ .


์˜ˆ์™ธ๋ฅผ ์ธ์œ„์ ์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ throw๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
throw๋Š” '๋˜์ง„๋‹ค' ์ฆ‰ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณด์ฃ .

 

/* ์ฝ”๋“œ4 */
public void A() { 
  try { 
  	throw new Exception(); 
  } catch(Exception e) { 
  	System.out.println("A์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ"); 
  } 
} //์ตœ์ข… ์ถœ๋ ฅ : A์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

 

๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. new ์˜ˆ์™ธ๋ช…();๋ฅผ ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ "throw ๊ฐ์ฒด"๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 


์ด๋ ‡๊ฒŒ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋Š” ์•Œ๋งž์€ catch ๋ฌธ์— ๋“ค์–ด๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์ฃ . throw๋Š” ์‚ฌ๋žŒ์ด '์ธ์œ„์ '์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•  ์˜ˆ์™ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ, ์œ ์ง€ ๋ณด์ˆ˜์— ๋„์›€์„ ์ฃผ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ throws๋ผ๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. throws๋Š” "๋ฉ”์†Œ๋“œ๋ช…() throws ์˜ˆ์™ธ๋ช…"  ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์ž์‹ ์„ ๋ถˆ๋Ÿฌ์˜จ ๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค ์ •๋„๋กœ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋ด…์‹œ๋‹ค.

 

/* ์ฝ”๋“œ5 */
public void A() { 
try { 
  	B(); 
  } catch(Exception e) { 
  	System.out.println("A์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ"); 
  } 
} 

public void B() throws Exception{ 
	throw new Exception(); 
}

 

A๋ฉ”์†Œ๋“œ์—์„œ B๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  B๋ฉ”์†Œ๋“œ๋Š” ์˜ˆ์™ธ๋ฅผ throw ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ B์—์„œ๋Š” try/catch ๊ตฌ๋ฌธ์ด ์—†์–ด์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ๋„ ์ฒ˜๋ฆฌํ•ด์ค„ ๊ณณ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋Œ€๊ฒŒ 'ํ˜ธ์ถœํ•œ ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ฒ ๋‹ค'๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด throws์ž…๋‹ˆ๋‹ค.


(์ฝ”๋“œ5)์˜ B๋ฉ”์„œ๋“œ ๊ฐ™์ด throws๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด, ์ธ์œ„์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์˜ˆ์™ธ๊ฐ€ A๋ฉ”์†Œ๋“œ๋กœ ๋„˜์–ด๊ฐ€ catch ๋ถ€๋ถ„์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด์ฃ . throws ํ‚ค์›Œ๋“œ๋Š” ๋ฉ”์†Œ๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋“ค์„ ๋‚˜์—ดํ•˜์—ฌ ์ ์–ด์คŒ์œผ๋กœ์จ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—์„œ ์ ์ ˆํ•˜๊ฒŒ ๋Œ€๋น„๋ฅผ ํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

throw, throws๋ฅผ ์ž˜ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ธฐ์–ตํ•˜์‹œ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ finally๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

finlly๋Š” try/catch ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  '๋ฐ˜๋“œ์‹œ'์ˆ˜ํ–‰๋˜๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋ณด์‹œ์ฃ .

 

/* ์ฝ”๋“œ6 */
public void A() { 
try { 
    System.out.println("1"); 
    System.out.println( 10 / 0); // ์˜ˆ์ƒ์น˜๋ชปํ•œ ์˜ˆ์™ธ๋ฐœ์ƒ 
    System.out.println("2"); 
  } catch(Exception e) { 
  	System.out.println("3"); 
  } finally { 
  	System.out.println("4"); 
  } 
} //์ตœ์ข… ์ถœ๋ ฅ : 1 3 4

 

(์ฝ”๋“œ6)๋ฅผ ๋ด…์‹œ๋‹ค. finally ๊ตฌ๋ฌธ์€ catch ๋‹ค์Œ์— ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. finally ๊ตฌ๋ฌธ์€ ๋ง์”€๋“œ๋ ธ๋“ฏ์ด ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰๋˜๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ตœ์ข… ์ถœ๋ ฅ์„ ๋ณด์‹œ๋ฉด 1 3 4 ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ฆ‰, 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  finally ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ . ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ  ์•Œ์•„ ๋‘์‹œ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ finally ๊ตฌ๋ฌธ์€ ์™œ ์‚ฌ์šฉํ• ๊นŒ์š”? ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰๋˜์•ผ ํ•˜๋Š” ๊ตฌ๋ฌธ์ด ์žˆ์„ ๊ฒฝ์šฐ
2. try ๊ตฌ๋ฌธ, catch ๊ตฌ๋ฌธ์˜ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ finally ๊ตฌ๋ฌธ์— ๋„ฃ์Œ์œผ๋กœ์จ ์ฝ”๋“œ ์ค‘๋ณต์„ ์—†์•จ ๊ฒฝ์šฐ

 

์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”? Scanner๊ฐ€ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

 

/* ์ฝ”๋“œ7 */
public void A() { 
  Scanner test = new Scanner(System.in); 
  try { 
      //~~~~~~~ ๊ธฐํƒ€ ๊ตฌ๋ฌธ ์ˆ˜ํ–‰ 
      test.close(); 
  } catch(Exception e) { 
  	test.close(); 
  } 
}

 

(์ฝ”๋“œ7)๋ฅผ ๋ณด์‹œ๋ฉด test๋กœ Scanner๊ฐ€ ์„ ์–ธ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ try ๊ตฌ๋ฌธ์—์„œ ์˜ˆ์™ธ ์—†์ด ๋งˆ์นœ๋‹ค๋ฉด test.close๋กœ Scanner๋ฅผ ๋๋‚ด์•ผ๊ฒ ์ฃ . ํ•˜์ง€๋งŒ try ๊ตฌ๋ฌธ ์•ˆ์— //~~~~๊ตฌ๋ฌธ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ๊ทธ๋Ÿผ try ๊ตฌ๋ฌธ์—์„œ close๋ฅผ ํ•ด์ฃผ์ง€ ๋ชปํ–ˆ์œผ๋‹ˆ catch ๊ตฌ๋ฌธ์— ๊ฐ€์„œ ๋˜‘๊ฐ™์€ ์ฝ”๋“œ์ธ test.close๋ฅผ ํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. 


ํ•˜์ง€๋งŒ finally ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋“  ์•ˆํ•˜๋“  ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ test.close์˜ ์ฝ”๋“œ ์ค‘๋ณต์„ ๋ง‰๊ณ  ๋ณด๋‹ค ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž, ์ง€๊ธˆ๊นŒ์ง€ try/catch ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š์€ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํžˆ ์‘์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ ๋“ญ๋‹ˆ๋‹ค. thow, thows๋Š” ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๊ฒŒ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋‘์‹œ๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 ์—ฌ๊ธฐ์„œ ๊ถ๊ธˆ์ฆ ํ•˜๋‚˜!

 

Q . ๊ทธ๋Ÿผ throws๊ฐ€ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ์˜ try~catch๋ฌธ์„ ์–ด๋–จ๊นŒ์š”?

 

@RequestMapping(value="/")
public void tabList(HttpServletRequest req, HttpServletResponse res) throws Exception{
		JSONObject jsonObject = new JSONObject();
		PrintWriter out = res.getWriter();
		
		try {
			jsonObject.put("code", 200);
		}catch(Exception e) {
			jsonObject.put("code", 400);
		}
		
		out.println(jsonObject);
	}

 

A.

try ๋ฌธ ์•ˆ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๊ทธ ์˜ˆ์™ธ๊ฐ€ catch๋ฌธ์œผ๋กœ ์ •์˜๊ฐ€ ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ catch๋ฌธ์œผ๋กœ ๋น ์ง‘๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐ–์œผ๋กœ ๋˜์ ธ์ ธ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. catch๋ฌธ์œผ๋กœ ์ •์˜๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์˜ˆ์™ธ์ด๊ฑฐ๋‚˜ try ๋ฐ”๊นฅ์— ์žˆ๋Š” ์˜์—ญ์˜ ๊ฒฝ์šฐ ๋ฐ–์œผ๋กœ ๋˜์ ธ์ง‘๋‹ˆ๋‹ค.

 

throws ๊ตฌ๋ฌธ์ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์•ˆ๋˜๋Š”๊ฒŒ throws๋Š” ์˜ˆ์™ธ๋ฅผ ์ง€๊ธˆ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ–์œผ๋กœ ๋˜์ ธ์„œ ์ฑ…์ž„์„ ๋– ๋„˜๊ธด๋‹ค๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ง€๊ธˆ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š” ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์ด ์žˆ๊ฒ ์ฃ ? ๊ฑฐ๊ธฐ์„œ๋„ try catch๋ฅผ ์“ฐ๋˜์ง€ throws๋ฅผ ๋˜ ์“ฐ๋˜์ง€ ๋‘˜ ์ค‘ํ•˜๋‚˜๋Š” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ฒฐ๊ตญ ํƒ€๊ณ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๋ฉด ์–ธ์  ๊ฐ„ try catch๋ฅผ ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

(๊ฒฐ๊ตญ public static void main๊นŒ์ง€ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€์„œ ๊ฑฐ๊ธฐ์„œ๋„ throws๋กœ ๋˜์ ธ๋ฒ„๋ ธ๋‹ค๋ฉด ๊ทธ ์˜ˆ์™ธ๋Š” ์•„์˜ˆ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.)

 

 Conference

์ž๋‹ค ๋œฏ์–ด๋ณด๊ธฐ - ์˜ˆ์™ธ์ฒ˜๋ฆฌ

 

 

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
profile on loading

Loading...