Internet °ü·Ã ÀÚ·á |
---|
Á¦¸ñ | [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Àιæ, ½ÅÁ¤È£, Á¦°¥¿µ, Á¶±¹ |