Internet °ü·Ã ÀÚ·á

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   [Java] Exception #2 1998/12/03 (17:34)
À̸§ ±èÈ¿¿ø
¹øÈ£ 60
Á¶È¸ 481
º»¹® 1.3.1 ¿¡·¯ÀÇ Á¾·ù¿Í Â÷À̸¦ ÀÌ¿ëÇÑ ±×·ìÈ­
   ¸¶Áö¸·À¸·Î ¿¹¿Ü¸¦ »ç¿ëÇÏ¿© ¾òÀ» ¼ö ÀÖ´Â  ÀåÁ¡Àº °ü°èÀÖ´Â ¿¹
·¯¸¦ °èÃþÈ­ÇÒ ¼ö ÀÖ´Ù´Â  °ÍÀÌÁÒ. ÇÑÂÊ¿¡¼­ ¿¡·¯°¡ ³ª±â  ½ÃÀÛÇϸé,
°ü°èµÈ ºÎºÐ¿¡¼­´Â °è¼ÓÇؼ­ ¿¡·¯°¡ ³ª´Â °ÍÀÌ Á¤»óÀÌ´Ù. ±×·¡¼­ ³ª
»ÛÀÏÀº ¶¼Áö¾î ´Ù´Ñ´Ù°í ÇÏÁö¿ä. ¿ì¸®ÀÇ  ºñºö¹ä¿¡¼­µµ °è¶õÀÌ ÀÌ»ó
ÇÏ´Ù°í ÆǴܵǾîÁö¸é, ÇÔ²² »ç¿Â °è¶õÀ̳ª Á¶¸®ÇÒ ¶§ »ç¿ëÇÑ ½Ä¿ë·ù
µîÀÇ ¹®Á¦°¡ ¹ß»ýÇßÀ» °ÍÀ̶ó´Â ÃßÃøÀ»  Çغ¼ ¼ö Àִµ¥ ÀÌ·¸µç  ¿¡
·¯´Â °áÄÚ È¥ÀÚ ³ªµ¹¾Æ ´Ù´Ï´Â ¹ýÀÌ  ¾ø´Â °ÍÀÌÁÒ. µû¶ó¼­ °èÃþÈ­ÇÏ
¿© ¿¡·¯¸¦ °ü¸®Çϸé, Àû¾îµµ °ü°èµÈ ¿¡·¯°¡  ÆÄ»ýµÇ´Â °ÍÀ» ¸·À» ¼ö
ÀÖ´Â ³î¶ó¿î ºñ¹ýÀÌ µÇ´Â °ÍÀÌÁÒ.

   ÀÚ¹Ù¿¡¼­ ´øÁ®Áø ¸ðµç  ¿¹¿Ü°¡ ±âº»ÀûÀΠŬ·¡½º  °´Ã¼À̱⠶§¹®
¿¡, ¿¹¿ÜÀÇ ±×·ìÈ­´Â ÀÚ¿¬½º·´°Ô Ŭ·¡½º¿Í ½´ÆÛŬ·¡½ºÀÇ °á°úÀ̾î¾ß
ÇÏ´Â °ÍÀÌÁÒ(³Ê¹«   ¾î·Æ´Ù°í »ý°¢ÇÏÁö   ¸¶¼¼¿ä). ÀÚ¹Ù¿¡¼­  ¿¹¿Ü´Â
Throwable Ŭ·¡½ºÀÇ ÀνºÅº½ºÀ̰ųª  ThrowableÀÇ ¼­ºêŬ·¡½ºÀ̾î
¾ß ÇÏÁö¿ä. ¶ÇÇÑ  ´Ù¸¥ ÀÚ¹Ù  Å¬·¡½ºÃ³·³ ThrowablÀÇ ¼­ºêŬ·¡½º³ª
¼­ºêŬ·¡½ºÀÇ ¼­ºêŬ·¡½º¸¦ ¸¸µé ¼ö ÀÖÁö¿ä.  ¿©±â¼­ µÎ°³ÀÇ ´Ü¾î¸¦
Á¤ÀÇÇØ¾ß °Ú´Âµ¥¿ä, ÀÌ·¸°Ô ¼­ºêŬ·¡½ºÈ­¸¦ ÇÏ´Ùº¸¸é, ¾î´À °÷ÀÌ  ¸¶
Áö¸·ÀÌ°í, ¾î´À ÂÊ¿¡¼­ »¸¾îÁ®  ³ª¿Ô´Â°¡¸¦ ¾Ë¾Æ¾ß Çϴµ¥, ÀÌ·±  °Í
À» ³ª¹«(Tree)¿¡ ºø´ë¾î Ç¥ÇöÇÑ ¹æ¹ýÀ»  Á¤ÀÇÇϵµ·Ï ÇÏÁö¿ä(Ç×»ó »ç
¶÷¿¡°Ô Á¤Ã¼¼ºÀ» ã¾ÆÁÖ´Â °ÍÀº »Ñ¸®¸¦ ã´Â °ÍÀÌÁö¿ä, ½ÉÁö¾î ¿µ¾î
´Ü¾î¶ÇÇÑ Root¸¦ ã´Â  °ÍÀÌ ºñ¹ýÀ̱⵵ ÇÏ°í,  ÇØÅ·Àº ¶ÇÇÑ rootÀÇ
Æнº¿öµå¸¦ ¾Ë¾Æ³»¾ß ÇÏ´Â  °ÍÀ̴ϱî). ³ª¹«ÀÇ  ³ª¹µÀ٠ó·³ ´õÀÌ»ó
¼­ºêŬ·¡½º¸¦ °¡ÁöÁö ¾Ê´Â °ÍÀ» ³ª¹µÀ٠Ŭ·¡½º(Leaf Class)¶ó  ÇÏ°í,
³ª¹«ÀÇ °¡Áöó·³ °è¼ÓÇؼ­ ¼­ºêŬ·¡½º¸¦  °¡Áö°í Àִ Ŭ·¡½º¸¦  ³ª
¹«°¡Áö Ŭ·¡½º(Node Class)¶ó Çϵµ·Ï ÇÏÁÒ.
    ¹è¿­À» ´Ù·ç´Ù ¿¹¿Ü°¡ ¹ß»ýÇϸé,  Æ¯Á¤ÇÑ ³ª¹µÀ٠Ŭ·¡½ºµéÁß¿¡
¼­ ÇϳªÀÇ ¿¹¿Ü°¡ ¹ß»ýÇÏ°í, ÀÌ°ÍÀº µ¿½Ã¿¡  ArrayExceptionÀÌ ¹ß»ý
ÇÏ´Â °ÍÀÌ´Ù. ¹°·Ð Exception±îÁö ¹ß»ýÇÏ´Â °èº¸°¡ µÇ´Â °ÍÀÌ´Ù.  ±×
·¯³ª ¸ðµç ¿¹¿Ü¸¦ ´Ù·ç´Â Exception¿¡ ÀÚÁú±¸·¹ÇÑ ExceptionÀ» ¾Ë¸®
°Ô µÇ¸é Á¤È®ÇÏ°Ô  ¾î¶² ¿¹¿Ü°¡  ¹ß»ýÇß´ÂÁö ¾Ë¼ö ¾ø±â¶§¹®¿¡  º°·Î
±ÇÀåÇÒ ¸¸ÇÑ °ÍÀº ¸øµÈ´Ù. °á·ÐÀûÀ¸·Î ¸»ÇØ ¿¹ÃøµÇ´Â ¿¹¿ÜÀÇ Á¾·ù¿¡
µû¶ó, ¿¹¿Ü¸¦ Àâ´Â °ÍÀÌ Áß¿äÇÑ ¹®Á¦°¡ µÈ´Ù

1.4 ½ÇÁ¦ÀûÀÎ ¿¹¿Ü 󸮹ý
   1.4.1 ÄÄÆÄÀϽà ¿¹¿Ü¸¦ ¹ß»ý½ÃÅ°´Â ¿¹Á¦
   Áö±Ý±îÁö ¿¹¿Ü¶õ ¹«¾ùÀ̸ç, ¿¹¿Ü¸¦  ÀÌ¿ëÇÏ¸é ¾î¶² ÀåÁ¡ÀÌ ÀÖ´Â
Áö¿¡ ´ëÇؼ­ °³°ýÀûÀ¸·Î »ìÆ캸¾ÒÁö¿ä. ¼ö°í ¸¹ÀÌ Çϼ̾î¿ä.  ±×·¯³ª
¹®Á¦´Â Ç×»ó Çö½ÇÀûÀÎ °ÍÀÌÁö  ÀÌ»óÀûÀ¸·Î °³³äÀ¸·Î ÆľÇÇÏ´Â  °ÍÀÌ
¾Æ´Ï±â ¶§¹®¿¡ Á÷Á¢ ¿¹Á¦¸¦ ÅëÇØ ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â »óȲÀ» ¸ñ°ÝÇÏ°í
±× 󸮸¦ À§ÇØ  ¼Ò½ºÄڵ带 °íÃĺÁ¾ß¸¸ "¿¹¿Ü¶õ  ÀÌ·± °ÍÀ̱º"Çϸç
¾È½É ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÚ, ´ÙÀ½ÀÇ  ¿¹Á¦¸¦ ÄÚµùÇÏ°í, ÄÄÆÄÀÏ ÇØ
º¸µµ·Ï ÇÏÁö¿ä. ÀÌ ¿¹Á¦´Â  10¸íÀÇ À̸§À» Ç¥ÁØÀÔ·ÂÀ»  ÅëÇØ ÀԷ¹Þ
°í, ÀÔ·ÂÀ» ´Ù ¹ÞÀ¸¸é Â÷·Ê´ë·Î Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
   // Test.java
   01: import java.io.*;
   02: import java.lang.*;
   03:
   04: class Test {
   05: public static void main (String args[] ) {
   06:         StringBuffer Names[] = new StringBuffer[10];
   07:         String thisLine=null;
   08:
   09:         DataInputStream         StdIn        =        new
DataInputStream(System.in);
   10:
   11:         for ( int i = 0 ; i < 10 ; i++) {
   12:                 System.out.println(" Input "+i+"'s name");
   13:                 thisLine = StdIn.readLine();
   14:                 Names[i] = new StringBuffer(20);
   15:                 Names[i].append( thisLine );
   16:         }
   17:         for(int i = 0 ; i < 10 ; i++ )
   18:                 System.out.println("Name : " + Names[i]);
   19: }
   20:}
   ¾Æ¹«¸® º¸¾Æµµ ¿¡·¯°¡ ¾øÀ» µí Çѵ¥ ÄÄÆÄÀÏ ½ÃÄѺ¸¸é ´ÙÀ½°ú °°
Àº ¿¡·¯ ¸Þ½ÃÁö°¡  ³ª¿É´Ï´Ù.. °íÀÇÀûÀ¸·Î  ¿¡·¯¸¦ ¹ß»ýÄÑ±â  ¶§¹®¿¡
³Ê¹« µÎ·Á¿öÇÏÁö ¸»µµ·Ï....
   Test.java:13: Exception java.io.IOException must be caught, or
it must be declared in the throws clause of this method.
                       thisLine = StdIn.readLine();
                                                ^
   1 error
   ¸Þ½ÃÁöÀÇ  ³»¿ëÀº  È¤½Ã³ª  IOExceptionÀÌ  ¹ß»ýÇÒÁöµµ  ¸ð¸£´Ï,
throw¹®ÀåÀ» »ç¿ëÇؼ­ ¹Ì¸® ¿¹¹æÇ϶ó´Â Çϴµ¥, ¶È¶ÈÇÑ ÀÚ¹Ù ÄÄÆÄÀÏ
·¯!! 9¹ø° ÁÙÀ» º¸¸é StdInÀ̶ó´Â °´Ã¼´Â  DataInputStreamÀ» ÅëÇØ
¸¸µé¾ú´Âµ¥, ÀԷ¹޴ ¹æÇâÀÌ System.inÀ̶ó°í µÇ¾î ÀÖ´Ù.  ½Ã½ºÅÛ¿¡
¼­ Á¦°øÇÏ´Â ÀԷ¿¡¼­  ¿¡·¯°¡ ¹ß»ýÇÒ  ¼ö Àִ°¡¶ó´Â Àǹ®À»  ´øÁú
¼öµµ ÀÖÁö¸¸, Ȥ½Ã³ª Å°º¸µå¿¡¼­ ÀÌ»óÀÌ »ý±â°Å³ª, Å°º¸µå  ÀÎÅÍÆäÀÌ
½º¿¡ ÀÌ»óÀÌ ÀÖ´Ù¸é ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÇ°í, µû¶ó¼­ ÀüüÀûÀ¸·Î ÇÁ·Î
±×·¥ÀÌ Á¤ÁöÇÏ°Ô µÇÁö¿ä. ÀÚ¹ÙÄÄÆÄÀÏ·¯´Â ÀÌ·±  ºÒ»ó»ç¸¦ ¹Ì¿¬¿¡ ¹æ
ÁöÇϱâ À§ÇØ ÄÄÆÄÀÏ Å¸ÀÓ ¿¹¿Ü°¡ ¹ß»ýÇßÀ½À» ¾Ë·ÁÁÖ´Â °ÍÀÌÁÒ. µû¶ó
¼­ ¿¹Á¦°¡ ¹«»çÈ÷ ÄÄÆÄÀÏ µÉ ¼ö  ÀÖµµ·Ï ¾Æ·¡ÀÇ TestException.java
ó·³ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÑ´Ù.
   // TestException.java
   01: import java.io.*;
   02: import java.lang.*;
   03:
   04: class TestException {
   05: public static void main (String args[] ) {
   06:         StringBuffer Names[] = new StringBuffer[10];
   07:         String thisLine=null;
   08:
   09:         DataInputStream         StdIn        =        new
DataInputStream(System.in);
   10:
   11:         for ( int i = 0 ; i < 10 ; i++) {
   12:                 System.out.println(" Input "+i+"'s name");
   13:                 try{
   14:                     thisLine = StdIn.readLine();
   15:                 } catch( IOException e)
                     {System.out.println("Error");}
   16:                 Names[i] = new StringBuffer(20);
   17:                 Names[i].append( thisLine );
   18:         }
   19:         for(int i = 0 ; i < 10 ; i++ )
   20:                 System.out.println("Name : " + Names[i]);
   21: }
   22:}
   TestException.java¸¦ ÄÄÆÄÀÏÇغ¸°í ½ÇÇà½ÃÄѺ¸¸é  10¸íÀÇ À̸§
À» ÀÔ·ÂÇÏ°í ³ª¸é 10¸íÀÇ  À̸§À» Â÷·Ê´ë·Î º¸¿©ÁÙ  °ÍÀÔ´Ï´Ù. ´ÜÁö
try, catch ¹®ÀåÀ» Ãß°¡ÇÏ°í catch¿¡¼­ Test.java¸¦ ÄÄÆÄÀÏÇÒ¶§ ¹ß»ý
ÇÒÁöµµ ¸ð¸¥´Ù°í ¾Ë·ÁÁØ IOExceptionÀ»  Ãß°¡ÇÏ°í ¿¡·¯°¡ ¹ß»ýÇß´Ù
°í Ãâ·ÂÇÏ´Â ¹®ÀåÀ» Ãâ·ÂÇÏ°Ô ÇßÀ» »ÓÀε¥,  ¿¡·¯ Çϳª ¾øÀÌ ÄÄÆÄÀÏ
µÇ°í ½ÇÇàµÇ´Â ³î¶ó¿î ÀÏÀÌ....

   1.4.2 ·±Å¸Àӽà ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â ¿¹Á¦
   ´Ù½Ã Çѹø ¿¹·¯¸¦  ¹ß»ý½ÃÅ°±â À§Çؼ­ °íÀÇÀûÀ¸·Î  14¹ø° ÁÙÀ»
ÁÖ¼®¹®À¸·Î ó¸®Çعö¸®µµ·Ï ÇÏÁÒ. ¾Õ¿¡¼­µµ °­Á¶ÇßµíÀÌ ¹è¿ò¿¡´Â ½Ç
¼ö°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
   // Test.java
   01: import java.io.*;
   02: import java.lang.*;
   03:
   04: class Test {
   05: public static void main (String args[] ) {
   06:         StringBuffer Names[] = new StringBuffer[10];
   07:         String thisLine=null;
   08:
   09:         DataInputStream         StdIn        =        new
DataInputStream(System.in);
   10:
   11:         for ( int i = 0 ; i < 10 ; i++) {
   12:                 System.out.println(" Input "+i+"'s name");
   13:                 thisLine = StdIn.readLine();
   14:         //      Names[i] = new StringBuffer(20);
   15:                 Names[i].append( thisLine );
   16:         }
   17:         for(int i = 0 ; i < 10 ; i++ )
   18:                 System.out.println("Name : " + Names[i]);
   19: }
   20:}
   ÁÖ¼®¹®À¸·Î 14¹ø° ÁÙÀ» ó¸®ÇÏ°í, ÄÄÆÄÀÏ  Çغ¸µµ·Ï ÇÏÀÚ. ÄÄÆÄ
ÀϽÿ¡ ¿¡·¯³ª ¾î¶² ¸Þ½ÃÁöµµ ¾øÀ» °ÍÀÔ´Ï´Ù. ±×·¯³ª ³Ê¹« ¾È½ÉÇÏÁö
¸»°í ½ÇÇàÀ» ½ÃÄѺ¸µµ·Ï Çغ¸¼¼¿ä.  ¾ÕÀÇ ¿¹Á¦Ã³·³ Àß ¾ÈµÉ  °ÍÀÌ´Ù.
¾î¶² ¿¡·¯°¡ ¹ß»ýÇߴ°¡ ?
   java.lang.NullPointerException
              at TestException.main(TestException.java:15)
   À§¿Í °°Àº ¸Þ½ÃÁö°¡ ³ª¿Â´Ù¸é  Áö±ØÈ÷ Á¤»óÀûÀÔ´Ï´Ù. ÀÌ·¸°Ô ·±
ŸÀӽà ³ª¿À´Â ¿¹¿Ü¸¦ ·±Å¸ÀÓ  ¿¹¿Ü¶ó°í ºÎ¸¥´Ù.  ÄÄÆÄÀϽà  ¿¹¿Ü°¡
¹ß»ýÇÑ°ÍÀº, ºñ·±Å¸ÀÓ ¿¹¿Ü(Non-Runtime Exception)À̶ó°í  ÇÕ´Ï´Ù.
NullPointerExceptionÀ̶ó´Â °ÍÀº 14¹ø°ÁÙÀ»  ÁÖ¼®Ã³¸®Ç߱⠶§¹®¿¡
¹ß»ýÇß´Ù´Â °ÍÀº ÀÚ¸íÇÑ ÀÌÄ¡ÀÌ´Ù. StringBuffer´Â ½ÇÁ¦ »ç¿ëÇϱâ Àü
¿¡ new StringBuffer(20) ó·³ »ç¿ëÇÒ Å©±â¸¦ Á¤Çؼ­ »ý¼ºÇØ¾ß ÇÏ´Â
µ¥ ¿Ö ÄÄÆÄÀϽÿ¡´Â  ¿¡·¯¸¦ ³»Áö ¾Ê¾ÒÀ»±î  ? ¿©±â¿¡ ¹Ù·Î  ÀÚ¹ÙÀÇ
ºñ¹ÐÀÌ ¼û¾î   ÀÖ´Â °ÍÀÌ´Ù.  new  ¸¦  ÅëÇØ  »ý¼ºÀ» ÇÏÁö   ¾ÊÀ¸¸é,
StringBuffer´Â null°ªÀÌ µÈ´Ù. µû¶ó¼­ nullÀÎ  °ªÀ» ¹Ù·Î »ç¿ëÇÏ·Á°í
ÇßÀ¸´Ï ½ÇÇà½Ã¿¡ ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ¹Û¿¡ ¾ø´Â °ÍÀÌ´Ù.

1.5 try, catch, finally »ç¿ë
   ¾Õ¿¡¼­´Â ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¸·±â À§ÇØ ±×³É try, catch¸¦ »ç
¿ëÇß¾ú´Âµ¥ À̹ø¿¡´Â Á¤È®ÇÏ°Ô try, cathc¿Í ÀÚ¹Ù¿¡ Ãß°¡µÈ finally¹®
¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏÁö¿ä.

   1.5.1 try ºí·°
   °£´ÜÈ÷ À̾߱â Çϸé try´Â ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â ºÎºÐÀ» {}À¸·Î  °¨½Î
°í ÀÖÀ¸¸é µÈ´Ù. ´õ¿í ÀϹÝÀûÀ¸·Î ³ªÅ¸³»¸é ´ÙÀ½Ã³·³ »ç¿ëÇÑ´Ù.
   try {
        ÀÚ¹Ù ¹®Àåµé;
   }
   [ÀÚ¹Ù ¹®Àåµé]µéÀº Çϳª  ÀÌ»óÀÇ Àû¹ýÇÑ ÀÚ¹Ù  ¹®ÀåÀε¥, ¿¹¿Ü¸¦
¹ß»ý½Ãų ¼ö ÀÖ´Â ¹®ÀåµéÀ» Æ÷ÇÔÇÏ°í ÀÖÀ»  ¼ö ÀÖ´Ù. ´Ù½Ã ºñ·±Å¸ÀÓ
¿¹¿Ü°¡ ¹ß»ýÇß´ø ¿¹Á¦ÀÇ ºÎºÐÀ¸·Î µ¹¾Æ°¡µµ·Ï ÇÏÀÚ.
   13:                 try{
   14:                     thisLine = StdIn.readLine();
   15:                 }

   ¾Õ¿¡¼­ try{}   ±¸ÀýÀÌ ºüÁ®  ÀÖÀ»  ¶§  Test.java:13: Exception
java.io.IOExceptionÀÌ ¹ß»ýÇÏ´Â   °ÍÀ» º¸¾Ò´Ù.  14¹ø°ÁÙÀÇ  ¹®ÀåÀÌ
IOExceptionÀ» ¹ß»ý½ÃÅ°´Â ¹®Àε¥, try·Î  ¹­¿© ÀÖ´Â °÷¿¡¼­ ¿¹¿Ü°¡
¹ß»ýÇϸé, try ¹®¾È¿¡ ÀÖ´Â ¹®Àå¿¡ °ü°èµÈ °¡Àå ÀûÀýÇÑ ¿¹¿Ü Çڵ鷯
°¡ 󸮸¦ ¸Ã°Ô µÇ´Â °ÍÀÌ´Ù. try´Â catch  ¶Ç´Â finally¸¦ ÅëÇØ ¿Ï°á
µÇ°Ô µÈ´Ù. ¸ÕÀú catch¸¦ »ìÆì º¸µµ·Ï ÇÏÀÚ.

   1.5.2 catch ºí·°
   ¾ÕÀý¿¡¼­ »ìÆ캸¾ÒµíÀÌ try´Â ¿¹¿Ü Çڵ鷯¿Í  °ü°èµÈ ¹üÀ§¸¦ °á
Á¤ÇÏ´Â ¹®ÀåÀÌ´Ù. µû¶ó¼­ ¹ß»ýµÈ ¿¹¿Ü¸¦  Ã³¸®ÇÒ Çڵ鷯¸¦ try ºí·°
´ÙÀ½¿¡ Çϳª ÀÌ»óÀÇ catch  ºí·°À» »ç¿ëÇؼ­ ¿¹¿Ü¸¦  Ã³¸®ÇÏ°Ô²û ÇÒ
¼ö ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù.
   try {
       ¿¹¿Ü °ü°èµÈ ¹®Àåµé ;
   } catch (Throwble Ŭ·¡½º  º¯¼ö¸í) {
       ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ¹®Àåµé ;
   } catch (Throwble Ŭ·¡½º  º¯¼ö¸í) {
       ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ¹®Àåµé ;
   } catch (Throwble Ŭ·¡½º  º¯¼ö¸í) {
       ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ¹®Àåµé ;
   }

   º¸´Â ¹Ù¿Í °°ÀÌ try ´ÙÀ½¿¡ ¹Ù·Î catch  °¡ ¹Ù·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
¶ÇÇÑ catch´Â Ç×»ó  ¸Å°³º¯¼ö·Î Throwble Ŭ·¡½º  ¶Ç´Â Throwable
¼­ºêŬ·¡½º¸¦ °¡Á®¾ß ÇÑ´Ù. ÄݽºÅÃÀ¸·Î ºÎÅÍ  ¾î¶² ¿¹¿Ü°¡ ¹ß»ýÇß´Â
Áö Àü´Þ¹Þ±â À§Çؼ­´Â ²À ÇÊ¿äÇÏ´Ù.  ¿©·¯°³ÀÇ catch°¡ »ç¿ëµÇ¸é Á¤
È®ÇÏ°Ô Àü´Þ¹Þ´Â °Íµµ ¸Å¿ì Áß¿äÇÑ ¹®Á¦ÀÌ´Ù. ±×·¯¸é ½ÇÁ¦  try¿¡¼­
¹è¿­°ú È­ÀÏÀÔÃâ·ÂÀ» ´Ù·ç´Ù ¿¹¿Ü¸¦ ¹ß»ý½ÃÅ°°í,  °Å±â¿¡ ´ëÇÑ ¿¹¿Ü
󸮸¦ catch¸¦ ÅëÇؼ­ ÇÏ´Â °ÍÀ» º¸µµ·Ï ÇÏÀÚ.
   try {
      È­ÀÏÀÔÃâ·ÂÀ» ÇÏ´Â ¹®Àå ;
      ¹è¿­À» ó¸®ÇÏ´Â ¹®Àå ;
   } catch (ArrayException e) {
      System.out.println("Caught    ArrayException    :    "    +
e.getMessage() ) ;
   } catch (IOException e) {
      System.out.println("Caught     IOException     :    "     +
e.getMessage() ) ;
   }

   À§ÀÇ ¿¹Á¦¿¡¼­´Â µÎ°¡Áö ¿¹¿Ü°¡  ¹ß»ýÇÒ °¡´É¼ºÀ» °¡Áö°í ÀÖ´Ù.
Çϳª´Â ¹è¿­¿¡ °ü°èµÈ °ÍÀÌ°í, ´Ù¸¥ Çϳª´Â ÆÄÀÏÀÔÃâ·Â¿¡ °ü°èµÈ °Í
ÀÌ´Ù. ¸¸¾à ¹è¿­¿¡ °ü°èµÈ ¿¹¿Ü°¡ ¹ß»ýÇϸé, ArrayExceptionÀÌ ÀÖ´Â
catch¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. ¹°·Ð ÆÄÀÏÀÔÃâ·Â¿¡ °ü°èµÈ ¿¹¿Ü°¡ ¹ß»ýÇϸé,
IOExceptionÀÌ ÀÖ´Â catch¸¦ ¼öÇàÇÏ°Ô µÈ´Ù.  ¹è¿­¿¡ °ü°èµÈ ¿¹¿Ü°¡
¹ß»ýÇߴµ¥, IOExceptionÀÌ ÀÖ´Â catch·Î °¡´Â ÀÏÀº Àý´ë·Î ¾ø´Ù. ±×
¸®°í getMessage()´Â Throwable Ŭ·¡½ºÀÇ ¸Þ½îµå·Î, ÇÏ´Â  ÀÏÀº ¿¹
¿Ü°¡ ¹ß»ýÇϸ鼭 ¸¸µé¾îÁø ¿¹¿Ü¿¡ ´ëÇÑ Á¤º¸¸¦ ¾Ë·ÁÁÖ´Â ¿ªÇÒÀ» ÇÑ
´Ù. ¸¸¾à "mydata.txt"¸¦ ¿­´Ù°¡ ¿¡·¯°¡ ¹ß»ýÇÏ¸é ´ÙÀ½°ú °°Àº  ¸Þ½Ã
Áö¸¦ Ãâ·ÂÇÏ°Ô µÈ´Ù.
   Caught IOException : mydata.txt


   1.5.3 finally ºí·°
   finally´Â ´õ¿í   ±ò²ûÇÏ°Ô ¿¹¿Ü¸¦   Ã³¸®ÇÏ°Ô ÇØÁÖ´Â   ´Ü°èÀÌ´Ù.
finally ÀÚü ´Ü¾î°¡ dz±â´Â ³¿»õó·³ ÃÖÁ¾ÀûÀ¸·Î  µÞ󸮸¦ ÇÏ´Â ¿ª
ÇÒÀ» ´ã´çÇÑ´Ù. À§ÀÇ ¿¹Á¦´Â ´ÙÀ½ÀÇ 3°¡Áö °¡´É¼ºÀ» °¡Áö°í ÀÖ´Ù.
   ¨ç È­ÀÏ ÀÔÃâ·ÂÀ» ó¸®ÇÏ´Ù ¿¹¿Ü°¡ ¹ß»ýÇÏ¿©  IOExceptionÀ» ¹ß
»ýÇÑ´Ù.
   ¨è ¹è¿­À» ó¸®ÇÏ´Ù ¿¹¿Ü°¡ ¹ß»ýÇÏ¿© ArrayExceptionÀ»  ¹ß»ýÇÑ
´Ù.
   ¨é ¹è¿­°ú ÆÄÀÏ ÀÔÃâ·Â 󸮿¡ ¼º°øÇÏ°í Á¤»óÀûÀ¸·Î Á¾·áµÈ´Ù.

   ÀÌ·¸°Ô µÇ¸é finallyÀÌ ¿Ö ÇÊ¿äÇÒ °ÍÀÎÁö ÀǾÆÇØ ÇÒ °ÍÀÌ´Ù. ±×·¯
³ª finally´Â ²À ÇÊ¿äÇÏ´Ù. ³ª¿­µÈ °¡´É¼ºµéÁß¿¡¼­ µÎ¹ø° °æ¿ì¸¦ »ý
°¢ÇØ º¸ÀÚ. ÆÄÀÏ ÀÔÃâ·ÂÀº ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁ³´Âµ¥, ¹è¿­  Ã³¸®¿¡¼­
¿¹¿Ü°¡ ¹ß»ýÇؼ­ ¹è¿­Ã³¸®¿¡ °ü°èµÈ ArrayExceptionÀ» ¹ß»ý½ÃÄÑ Á¤
»óÀûÀ¸·Î ÇÁ·Î±×·¥À» Á¾·á½ÃÅ°°Ô Çß´Ù. °ú¿¬ ¼º°øÀûÀ¸·Î ÇÁ·Î±×·¥ÀÌ
Á¾·áµÇ¾úÀ»±î ? ÆÄÀÏ ÀÔÃâ·Â¿¡ ¼º°øÇß´Ù¸é, ÆÄÀÏÀº  ¿­·ÁÁø ü·Î ³²
¾ÆÀÖ°Ô µÈ´Ù. ±×¸®°í ÇÁ·Î±×·¥ÀÌ  Á¾·áµÇ¸é ¿­·ÁÁø ü·Î  ³²¾Æ ÀÖ°Ô
µÇ´Âµ¥, À̶§ ÆÄÀÏ¿¡ ¼Õ»óÀÌ ¿Â´Ù¸é ¾î¶»°Ô Çϰڴ°¡ ? ÀÌ·± ¹®Á¦¿¡
´ëóÇϱâ À§Çؼ­ finally°¡ »ç¿ëµÇ´Â °ÍÀÌ´Ù. À§ÀÇ ¿¹Á¦¸¦ ´õ¿í È®Àå
ÇÏ¿© finally¸¦ Ãß°¡ÇÏ¸é ´ÙÀ½Ã³·³ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
   try {
      È­ÀÏÀÔÃâ·ÂÀ» ÇÏ´Â ¹®Àå ;
      ¹è¿­À» ó¸®ÇÏ´Â ¹®Àå ;
   } catch (ArrayException e) {
      System.out.println("Caught    ArrayException    :    "    +
e.getMessage() ) ;
   } catch (IOException e) {
      System.out.println("Caught     IOException     :    "     +
e.getMessage() ) ;
   } finally {
     ¸¸¾à (¿­¾îÁø ÆÄÀÏÀÌ Á¤»óÀûÀÌÁö ¸øÇÏ´Ù¸é) {
          System.out.println("¿­·ÁÁø ÆÄÀÏÀ» ´Ý´Â´Ù") ;
          close(¿­·ÁÁø ÆÄÀÏ) ;
     } ¾Æ´Ï¸é {
          System.out.println("ÆÄÀÏÀ» ¿­Áö ¸øÇß½À´Ï´Ù") ;
     }
   }
   ÀÌÁ¦ ¿Ïº®ÇÏ°Ô ¿¡·¯¿Í ¿¹¿Ü¿¡ ´ëóÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. ÃÖ¼ÒÇÑ ¿©
·¯ºÐÀÌ ¸¶·ÃÇÑ ÀڷḦ ÀÒ¾î¹ö¸®°Å³ª  ÇÏ´Â ÀÏÀº ¾øÀ»  °ÍÀÌ´Ù. Çѹø
°õ°õÈ÷ »ý°¢Çغ¸¶ó. 3Àý¿¡¼­ À̾߱âÇÑ ¼¼°¡Áö ÀåÁ¡ÀÌ ¸ðµÎ ±¸ÇöµÇ°í
ÀÖ´ÂÁö, õõÈ÷ »ý°¢µé Çغ¸¼¼¿ä.


   ÀÌ °­Á´ ÀúÀÚµéÀÇ µ¿ÀǾøÀÌ »ó¾÷ÀûÀ¸·Î
   ÀÌ¿ëµÇ°Å³ª ¸®Æ÷½ºÆà µÉ ¼ö ¾ø½À´Ï´Ù.

       ½Å¼¼´ë ¾ð¾î ÀÚ¹Ù Àü¹®°¡¸¦ ²Þ²Ù´Â
       ÀáÅÊÀÌ 3Àιæ, ½ÅÁ¤È£, Á¦°¥¿µ, Á¶±¹



HomePage Backward Forward Post Reply List
1998 by swindler