32-1.¿¹¿Ü

32-1-°¡.ÀüÅëÀûÀÎ ¿¹¿Ü ó¸®

¿¹¿Ü(Exception)¶õ ÇÁ·Î±×·¥ÀÇ Á¤»óÀûÀÎ ½ÇÇàÀ» ¹æÇØÇÏ´Â Á¶°ÇÀ̳ª »óŸ¦ ÀǹÌÇϴµ¥ ÇÁ·Î±×·¥À» À߸ø ÀÛ¼ºÇؼ­ ¿Àµ¿ÀÛÇϰųª ´Ù¿îµÇ°Ô ¸¸µå´Â ¿¡·¯(Error)¿Í´Â ´Ù¸£´Ù. ¿øÄ¢ÀûÀ¸·Î ¿¡·¯´Â °³¹ßÁß¿¡ ¸ðµÎ ¼öÁ¤ÇØ¾ß Çϴµ¥ ¸ð¸£°í µé¾î°¡´Â °ÍÀº ÇÒ ¼ö ¾øÁö¸¸ ÀÏ´Ü ¿¡·¯°¡ ÀÖ´Ù´Â °ÍÀ» ¾Ë¾ÒÀ¸¸é ±×³É ³²°Ü µÎÁö ¾ÊÀ» °ÍÀÌ´Ù. ÃÖÁ¾ ¸±¸®ÁîÇÒ ¶§±îÁö ¹Ìó ¹ß°ßÇÏÁö ¸øÇϸé À̰ÍÀ» ¹ö±×¶ó°í ºÎ¸£¸ç ±× Áß¿¡¼­µµ ¾ÆÁÖ ¾ÇÁúÀûÀÎ ¿¡·¯¸¦ »µ~±×¶ó°í ºÎ¸¥´Ù. ¿¹¿Ü¶õ ¹ö±×¿Í´Â ´Þ¸® Á¦´ë·Î ¸¸µé¾úÁö¸¸ ¿øÇϴ´ë·Î µ¿ÀÛÇÏÁö ¸øÇÏ°Ô ¹æÇØÇÏ´Â ¿ÜºÎÀÇ ºÒ°¡Ç×·ÂÀûÀÎ »óȲÀ» ¸»ÇÑ´Ù.

ÇÁ·Î±×·¥À» ¾Æ¹«¸® Ä¡¹ÐÇÏ°Ô ³í¸®ÀûÀ¸·Î Àß ÀÛ¼ºÇÏ´õ¶óµµ ¿¹¿Ü´Â Ç×»ó ¹ß»ýÇÒ ¼ö Àִµ¥ ¿Ö³ÄÇϸé ÀÛ¼º ½ÃÁ¡¿¡¼­ ½ÇÇà ½ÃÀÇ ¸ðµç »óȲÀ» Á¤È®ÇÏ°Ô ¿¹ÃøÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ¿¹¿Ü°¡ ¹ß»ýÇÏ´Â °¡Àå Å« ÀÌÀ¯´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â »ç¶÷À̶ó´Â Á¸Àç°¡ ¿ö³« ºÒÈ®½ÇÇϱ⠶§¹®ÀÌ´Ù. Ç×»ó Á¤ÇØÁø ÀýÂ÷´ë·Î ÇÁ·Î±×·¥À» µ¿ÀÛ½Ã۰í Á¤È®ÇÑ °ª¸¸ ÀÔ·ÂÇÑ´Ù¸é ¹®Á¦°¡ ¾ø°ÚÁö¸¸ ½Ç¼ö Åõ¼ºÀÌÀÎ »ç¶÷Àº ±×·¸Áö ¸øÇÏ´Ù.

ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â ȯ°æ ¶ÇÇÑ ºÒÈ®½ÇÇϱâ´Â ¸¶Âù°¡ÁöÀÌ´Ù. ÇÏµå µð½ºÅ©°¡ ¾ðÁ¦ °¡µæÂû Áö ¿¹ÃøÇÒ ¼ö ¾øÀ¸¸ç ÇÁ¸°ÅÍÀÇ Á¾À̰¡ ¾ðÁ¦ ¶³¾îÁú Áöµµ ¾Ë ¼ö ¾ø´Ù. ¶ÇÇÑ ÄÄÇ»ÅÍ ¿ÜºÎÀÇ È¯°æÀÎ ³×Æ®¿öÅ©µµ ºÒ¾ÈÁ¤Çؼ­ ¾ðÁ¦µçÁö ²÷¾îÁú ¼ö ÀÖ°í ¾Ë ¼ö ¾ø´Â ÀÌÀ¯·Î µ¥ÀÌÅͰ¡ Áß°£¿¡¼­ »ç¶óÁö±âµµ ÇÑ´Ù. Àß Â¥¿©Áø ÇÁ·Î±×·¥Àº ÀÌ·± ¿©·¯ °¡Áö ¿¹¿Ü »óȲ¿¡µµ Àß ´ëÃ³ÇØ¾ß Çϴµ¥ À߸øµÈ ÀÔ·ÂÀÌ ¿Ö À߸øµÇ¾ú´ÂÁö »ç¿ëÀÚ¿¡°Ô ¾Ë¸®°í ´Ù½Ã ÀÔ·ÂÇϵµ·Ï ÇØ¾ß ÇÏ¸ç ½ÇÆÐÇÑ µ¿ÀÛÀº Àç½ÃµµÇØ¾ß ÇÑ´Ù. ¾î¶² °æ¿ì¶óµµ ÃÖ¼ÒÇÑ ÇÁ·Î±×·¥ÀÌ ´Ù¿îµÇÁö´Â ¾Êµµ·Ï ÇØ¾ß ÇÑ´Ù. ¿¹¿Ü¸¦ Àß Ã³¸®ÇÏÁö ¸øÇϸé À̰͵µ ÀÏÁ¾ÀÇ ¹ö±×°¡ µÈ´Ù.

ÇÁ·Î±×·¥Àº »ç¿ëÀÚ¿Í »óÈ£ ÀÛ¿ëÇϰųª ¿ÜºÎÀÇ È¯°æ°ú Åë½ÅÇÒ ¶§ Ç×»ó ¹æ¾îÀûÀÎ ÄÚµå·Î ¹ß»ý °¡´ÉÇÑ ¸ðµç ¿¹¿Ü¸¦ ÀûÀýÇÏ°Ô Ã³¸®ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â »ç¿ëÀڷκÎÅÍ µÎ °³ÀÇ Á¤¼ö°ªÀ» ÀÔ·Â¹Þ¾Æ µÎ °ªÀ» ³ª´« °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

 

int a,b;

 

printf("³ª´©¾îÁú ¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

scanf("%d",&a);

printf("³ª´©´Â ¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

scanf("%d",&b);

printf("³ª´©±â °á°ú´Â %dÀÔ´Ï´Ù.\n",a/b);

 

»ç¿ëÀÚ°¡ Á¤»óÀûÀÎ °ª¸¸ ÀÔ·ÂÇÑ´Ù¸é ÀÌ ÇÁ·Î±×·¥Àº ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. printf°¡ Ãâ·ÂÇÏ´Ù ½ÇÆÐÇÒ¸® ¾ø°í scanf°¡ ÀÔ·ÂÀ» ¸ø ¹ÞÀ»¸®µµ ¾ø´Ù. ±×·¸´Ù°í ±× Á¤È®ÇÑ CPU°¡ ±×±îÁþ ³ª´°¼ÀÀ» Ʋ¸±¸®µµ ¸¸¹«ÇÏ´Ù. a¿¡ 6, b¿¡ 3À» ÀÔ·ÂÇÏ¸é ±× °á°ú·Î 2°¡ Á¤È®ÇÏ°Ô Ãâ·ÂµÉ °ÍÀÌ´Ù. ±×·¯³ª ³ª´©¾îÁö´Â ¼ö·Î 0À» ÀÔ·ÂÇϸé ÀÌ ÇÁ·Î±×·¥Àº ³ª´°¼À ¿¬»êÀ» ÇÏ´ø Áß¿¡ ¿¹¿Ü¸¦ ÀÏÀ¸Å°°í ´Ù¿îµÇ¾î ¹ö¸°´Ù. ¼öÇÐÀûÀ¸·Î ºÒ°¡´ÉÇÑ ¿¬»êÀ̹ǷΠb¿¡ Àý´ë·Î 0ÀÌ ÀԷµǾ´Â ¾ÈµÈ´Ù. ¶Ç a¿Í b°¡ ÁÂÇ¥°ªÀ̳ª ¹è¿­ÀÇ Ã·ÀÚ¶ó°í °¡Á¤ÇÒ ¶§ µÎ °ª ¸ðµÎ À½¼ö¿©¼­´Â ¾ÈµÈ´Ù´Â ±ÔÄ¢ÀÌ Àû¿ëµÈ´Ù. ÀÌ·± À߸øµÈ ÀԷ¿¡ ´ëÇØ ÇÁ·Î±×·¥Àº ¿¹¿Ü¸¦ ó¸®ÇØ¾ß Çϴµ¥ ÀüÅëÀûÀÎ ¹æ¹ýÀº °ªÀ» »ç¿ëÇϱâ Àü¿¡ if¹®À¸·Î ÀÔ·ÂµÈ °ªÀ» Á¡°ËÇÏ´Â °ÍÀÌ´Ù.

 

¿¹ Á¦ : TraditionalError

#include <Turboc.h>

 

void main()

{

     int a,b;

    

     printf("³ª´©¾îÁú ¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

     scanf("%d",&a);

     if (a < 0) {

          printf("%d´Â À½¼öÀ̹ǷΠ³ª´©±â °ÅºÎ\n",a);

     } else {

          printf("³ª´©´Â ¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

          scanf("%d",&b);

          if (b == 0) {

              puts("0À¸·Î´Â ³ª´­ ¼ö ¾ø½À´Ï´Ù.");

          } else if (b < 0) {

              printf("%d´Â À½¼öÀ̹ǷΠ³ª´©±â °ÅºÎ\n",b);

          } else {

              printf("³ª´©±â °á°ú´Â %dÀÔ´Ï´Ù.\n",a/b);

          }

     }

}

 

a¸¦ ÀԷ¹ÞÀº ÈÄ if¹®À¸·Î ÀÌ °ªÀÌ À½¼öÀÎÁö Á¡°ËÇÑ´Ù. ¸¸¾à À½¼ö¶ó¸é ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ¿© À߸øµÈ °ªÀÓÀ» ¾Ë¸°´Ù. ±×·¸Áö ¾Ê´Ù¸é b¸¦ ÀԷ¹ްí ÀÌ °ªÀÌ 0ÀÎÁö, À½¼öÀÎÁö¸¦ Á¡°ËÇÑ´Ù. ÀÌ ¸ðµç Á¶°ÇÀÌ ¸¸Á·ÇÒ ¶§¸¸ a/b ¿¬»ê °á°ú¸¦ Ãâ·ÂÇÏ°í ±×·¸Áö ¾Ê´Ù¸é ¿¬»êÀ» °ÅºÎÇÑ´Ù. Ʋ¸° °ªÀ» ÀÔ·ÂÇßÀ» ¶§ ´Ù½Ã ÀԷ¹ÞÀ¸·Á¸é Àüü Äڵ带 while µîÀÇ ¹«ÇÑ ·çÇÁ·Î °¨½Î°í ¼º°øÇßÀ» ¶§¸¸ break·Î ºüÁ® ³ª¿Àµµ·Ï ÇÏ¸é µÈ´Ù.

if¹®À¸·Î Á¶°ÇÀ» Á¡°ËÇÏ¿© ¿¹¿Ü¸¦ ÀÏÀ¸Å³¸¸ÇÑ »óȲÀ» ÇÇÇØ°¡´Â ÀÌ·± ÀüÅëÀûÀÎ ¹æ¹ýÀº Áö±Ý±îÁö ¸¹ÀÌ »ç¿ëÇØ¿Ô°í ¶Ç Áö±ØÈ÷ »ó½ÄÀûÀÎ ¹æ¹ýÀÌ´Ù. ÇÏÁö¸¸ Á¡°ËÇÒ ¿¹¿Ü°¡ ¸¹¾ÆÁö¸é ¿©·¯ °¡Áö·Î ÄÚµåÀÇ Ç°ÁúÀÌ ¶³¾îÁø´Ù. ´ÙÀ½ ¿¹´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í °ªÀ» ÀÔ·Â¹Þ¾Æ °è»êÇÏ°í ±× °á°ú¸¦ ÆÄÀÏ·Î Ãâ·ÂÇÏ´Â ÄÚµåÀε¥ ¹ß»ý °¡´ÉÇÑ ¿¹¿Ü°¡ ¹«Ã´ ¸¹´Ù.

 

size=ÇÊ¿äÇÑ ¸Þ¸ð¸® ¾ç Á¶»ç

if (size < 100M || size > 0) {

     ptr=malloc(size);

     if (ptr) {

          if (InputData(ptr) == TRUE) {

              if (CalcData(ptr) == TRUE) {

                   File=ÆÄÀÏ ¿­±â();

                   if (File) {

                        if (ÆÄÀÏ ¾²±â()) {

                            ¿¡·¯ Ãâ·Â("ÆÄÀÏ ¾²±â ½ÇÆÐ");

                        }

                        ÆÄÀÏ ´Ý±â();

                   } else {

                        ¿¡·¯ Ãâ·Â("ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½");

                   }

              } else {

                   ¿¡·¯ Ãâ·Â("°è»êÁß ¿¡·¯ ¹ß»ý");

          } else {

              ¿¡·¯ Ãâ·Â("ÀÔ·ÂÁß ¿¡·¯ ¹ß»ý");

          }

          free(ptr);

     } else {

          ¿¡·¯ Ãâ·Â("¸Þ¸ð¸® ÇÒ´ç ½ÇÆÐ");

     }

} else {

     ¿¡·¯ Ãâ·Â("¿ä±¸ÇÏ´Â ¸Þ¸ð¸® Å©±â°¡ ³Ê¹« Å©°Å³ª Ȳ´çÇÏ°Ô ÀÛÀ½");

}

 

³Ê¹« ¸¹Àº ¸Þ¸ð¸®¸¦ ¿ä±¸Çϰųª ¸Þ¸ð¸® ÇÒ´ç¿¡ ½ÇÆÐÇÒ ¼öµµ ÀÖ°í ÀÔ·Â Áß¿¡ ¿¡·¯°¡ ¹ß»ýÇÒ ¼öµµ ÀÖÀ¸¸ç °è»ê Áß¿¡ ¿Àµ¿ÀÛÇÒ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ÆÄÀÏÀ» ¿­°Å³ª ¾µ ¶§µµ ¿©ÀüÈ÷ ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ÀÌ ¸ðµç ¿¹¿Ü »óȲ¿¡ ´ëÇØ ÀÏÀÏÀÌ if¹®À¸·Î Á¶°ÇÀ» Á¡°ËÇØ¾ß ÇÏ¸ç ±×·¯´Ù º¸´Ï ½ÇÁ¦·Î ÀÛ¾÷À» ÇÏ´Â Äڵ庸´Ù ¿¹¿Ü¸¦ ÆÇ´Ü ¹× ó¸®ÇÏ´Â Äڵ尡 ÈξÀ ´õ ¸¹´Ù. ¿¹¸¦ À§ÇØ ÀϺη¯ ²¿¾Æ ³õÀº Äڵ尡 ¾Æ´Ï¸ç ½ÇÁ¦ »óȲÀº À̺¸´Ù ÈξÀ ´õ º¹ÀâÇØÁú ¼öµµ Àִµ¥ ±×¸¸Å­ ¿¹¿Ü´Â ÀÚÁÖ ¹ß»ýÇÑ´Ù.

ÀÌ·± 󸮸¦ ÇÏ·Á¸é ¸ðµç ÇÔ¼ö´Â ¼º°ø ¿©ºÎ¸¦ ¸®ÅÏÇØ¾ß Çϸç ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °÷¿¡¼­´Â ¸®ÅϰªÀ» ÀÏÀÏÀÌ Á¡°ËÇØ¾ß ÇϹǷΠ¹«Ã´ ¹ø°Å·Ó´Ù. ½ÇÁ¦ ÀÛ¾÷À» ÇÏ´Â ÄÚµå¿Í ¿¹¿Ü¸¦ ó¸®ÇÏ´Â Äڵ尡 Áß°£ Áß°£¿¡ ¼¯¿© ÀÖ¾î °ü¸®Çϱ⵵ ¾î·Æ°í ÄÚµåÀÇ ÇÙ½ÉÀ» ÆÄ¾ÇÇϱ⵵ ½±Áö ¾Ê´Ù. ¿¡·¯¸¦ Á¡°ËÇÏ´Â if¹®°ú ¿¡·¯ ¸Þ½ÃÁö Ãâ·Â¹®ÀÌ ³Ê¹« ¶³¾îÁ®¼­ ´ëÀÀµÇ´Â Äڵ带 ÇÑ´«¿¡ ¾Ë¾Æº¸±âµµ ¾î·Æ´Ù. °Ô´Ù°¡ ÀæÀº if¹®À¸·Î ÀÎÇØ µé¿©¾²±â°¡ Áö³ªÄ¡°Ô ±í¾îÁ® ÄÚµåÀÇ ¸ð¾çÀÌ ²Ã»ç³³´Ù. À̼ø½Å À屺ÀÇ ÇÐÀÍÁø°ú À¯»çÇÑ ¸ð¾çÀε¥ ½Î¿ï ¶§´Â ÁÁÀ»Áö ¸ô¶óµµ Äڵ带 °ü¸®ÇÒ ¶§´Â º°·Î ÁÁÁö ¾Ê´Ù.

ÀÌ·± Äڵ带 ºÐ¼®ÇÒ ¶§´Â Àß ¹ß»ýÇÏÁö ¾Ê´Â ¿¹¿Ü ÄÚµå´Â ÀÏ´Ü ¹«½ÃÇϰí Àоî¾ß Çϴµ¥ ¹«Áú¼­ÇÏ°Ô ¼¯¿© ÀÖ´Ù º¸´Ï ¾îµð°¡ ¿¹¿Ü ó¸® ÄÚµåÀÎÁö ¾îµð°¡ ÁøÂ¥ ÄÚµåÀÎÁö Àß ºÐ°£µÇÁöµµ ¾Ê´Â´Ù. ¾ÈÁ¤ÀûÀÎ ÇÁ·Î±×·¥À» ¸¸µé±â À§Çؼ­´Â ¹ß»ý °¡´ÉÇÑ ¸ðµç ¿¹¿Ü¸¦ ó¸®ÇÒ Çʿ䰡 ºÐ¸íÈ÷ ÀÖ´Ù. ±×·¯³ª ÀüÅëÀûÀÎ ¹æ¹ýÀº ¿©·¯ °¡Áö·Î ÁÁÁö ¾ÊÀº È¿°ú°¡ ÀÖ¾î ÁúÀûÀ¸·Î ´Ù¸¥ ¹æ¹ýÀÌ ÇÊ¿äÇØÁ³´Ù.