32-2-´Ù.¿¹¿Ü¿Í Ŭ·¡½º

Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö°¡ ƯÁ¤ÇÑ Á¾·ùÀÇ ¿¹¿Ü¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Ù¸é ÀÌ ¿¹¿Ü¿¡ ´ëÇÑ ¸ðµç 󸮸¦ Ŭ·¡½º¾È¿¡ ¿Ïº®ÇÏ°Ô ÅëÇÕÇØ ³ÖÀ» ¼ö ÀÖ´Ù. Ŭ·¡½º ³»ºÎ¿¡ ¿¹¿Ü Ŭ·¡½º¸¦ Áö¿ªÀûÀ¸·Î ¼±¾ðÇϸé ÀÌ Å¬·¡½º´Â ½º½º·Î ¿¹¿Ü¸¦ ó¸®ÇÒ ¼ö ÀÖÀ¸¸ç ¿¹¿Ü ó¸® ÄÚµå±îÁö Æ÷ÇÔÇÏ°í ÀÖÀ¸¹Ç·Î ¾î¶² »óȲ¿¡¼­µµ ¿¹¿Ü¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. Ŭ·¡½º¸¦ ¼³°èÇÒ ¶§ºÎÅÍ ¿¹¿Ü 󸮸¦ Æ÷ÇÔÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ MyClass´Â ¿ÏÀüÇÑ ¿¹¿Ü ó¸® ´É·ÂÀ» °¡Áö°í ÀÖ´Ù.

 

¿¹ Á¦ : ExceptionClass

#include <Turboc.h>

 

class MyClass

{

public:

     class Exception

     {

     private:

          int ErrorCode;

 

     public:

          Exception(int ae) : ErrorCode(ae) { }

          int GetErrorCode() { return ErrorCode; }

          void ReportError() {

              switch (ErrorCode) {

              case 1:

                   puts("¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù.");

                   break;

              case 2:

                   puts("¿¬»ê ¹üÀ§¸¦ ÃÊ°úÇß½À´Ï´Ù.");

                   break;

              case 3:

                   puts("ÇÏµå µð½ºÅ©°¡ °¡µæ á½À´Ï´Ù.");

                   break;

              }

          }

     };

     void Calc() {

          try {

              if (TRUE/*¿¡·¯ ¹ß»ý*/) throw Exception(1);

          }

          catch(Exception &e) {

              printf("¿¡·¯ ÄÚµå = %d => ",e.GetErrorCode());

              e.ReportError();

          }

     }

     void Calc2() throw(Exception) {

          if (TRUE/*¿¡·¯ ¹ß»ý*/) throw Exception(2);

     }

};

 

void main()

{

     MyClass M;

     M.Calc();

     try {

          M.Calc2();

     }

     catch(MyClass::Exception &e) {

          printf("¿¡·¯ ÄÚµå = %d => ",e.GetErrorCode());

          e.ReportError();

     }

}

 

MyClass´Â ¿¹¿Ü¸¦ ó¸®ÇÏ´Â Exception Ŭ·¡½º¸¦ ³»ºÎ¿¡¼­ ¼±¾ðÇÏ°í ÀÖÀ¸¸ç ÀÌ Å¬·¡½ºÀÇ ¸â¹ö ÇÔ¼ö CalcÀÇ ³»ºÎ´Â Exception Áö¿ª Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© ¿¹¿Ü¸¦ ó¸®ÇÏ°í ÀÖ´Ù. °è»êÁß¿¡ ¿¡·¯°¡ ¹ß»ýÇϸé ÀûÀýÇÑ Exception ¿¹¿Ü °´Ã¼¸¦ »ý¼ºÇÏ¿© ´øÁö¸ç Calc ÇÔ¼ö³»¿¡¼­ ÀÌ °´Ã¼¸¦ ¹Þ¾Æ¼­ ó¸®ÇÑ´Ù. ¿¹¿Ü 󸮿¡ ´ëÇÑ ¸ðµç Äڵ尡 Ŭ·¡½º¿¡ ĸ½¶È­µÇ¾î ÀÖÀ¸¹Ç·Î ¿ÜºÎ¿¡¼­´Â ¿¹¿Ü 󸮿¡ ´ëÇØ ´õ ÀÌ»ó ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. main¿¡¼­´Â M.Calc()¸¦ ºÎ¸£±â¸¸ ÇÏ¸é µÈ´Ù.

Ŭ·¡½º¿¡ Æ÷ÇÔµÈ ¿¹¿Ü °´Ã¼¸¦ ¿ÜºÎ¿¡¼­µµ ÂüÁ¶ÇÏ·Á¸é ¹Ýµå½Ã public ¾×¼¼½º ¼Ó¼ºÀ» °¡Á®¾ß ÇÑ´Ù. Ŭ·¡½º ³»ºÎÀÇ ¸â¹ö ÇÔ¼ö¸¸ ÀÌ °´Ã¼¸¦ »ç¿ëÇÑ´Ù¸é privateÀ̾ »ó°ü¾ø°ÚÁö¸¸ ¸ðµç ¸â¹ö ÇÔ¼ö°¡ ¿¹¿Ü¸¦ Á÷Á¢ ó¸®ÇÒ ¼ö ¾ø´Ù¸é È£ÃâºÎ¿¡¼­µµ ¿¹¿Ü °´Ã¼¸¦ ÀâÀ» ¼ö ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ¿¹Á¦ÀÇ Calc2 ÇÔ¼ö´Â ¿¹¿Ü¸¦ ´øÁö±â¸¸ ÇÏ°í Á÷Á¢ ó¸®ÇÏÁö ¾Ê´Â´Ù. ÀÌ·² °æ¿ì È£ÃâºÎÀÎ main¿¡¼­ Calc2¸¦ È£ÃâÇÏ´Â ¹®ÀåÀ» try ºí·Ï¿¡ ÀÛ¼ºÇØ¾ß Çϸç catch¹®¿¡¼­ MyClass::ExceptionÀ» ÀâÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯±â À§Çؼ­ ExceptionÀº ¿ÜºÎ¿¡¼­ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â publicÀ̾î¾ß ÇÏ´Â °ÍÀÌ´Ù.

¿¹¿Ü¸¦ ó¸®Çϴµ¥ Ŭ·¡½º °èÃþÀ» ±¸¼ºÇÏ°í °¡»ó ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ ´ÙÇü¼º±îÁö È°¿ëÇÏ°í ÀÖÀ¸¸ç ÅëÇÕ¼ºÀ» ³ôÀ̱â À§ÇØ Àß »ç¿ëÇÏÁö ¾Ê´Â Áö¿ª Ŭ·¡½º±îÁöµµ ¼±¾ðÇÑ´Ù. ¿©±â¿¡ Ãß»ó Ŭ·¡½º¿Í ¼ø¼ö °¡»ó ÇÔ¼ö±îÁö µ¿¿øÇϸé ÈξÀ ´õ º¹ÀâÇØÁú ¼öµµ ÀÖ´Ù. Àß ¹ß»ýÇÏÁöµµ ¾Ê´Â ¿¹¿Ü 󸮸¦ À§ÇØ ÀÌ·± °ÅâÇÑ ¹®¹ý±îÁö µ¿¿øÇÏ´Â °ÍÀº ¿ØÁö °ÝÀÌ ¾î¿ï¸®Áö ¾Ê´Â °Í °°¾Æ º¸À̱⵵ ÇÑ´Ù.

¹°·Ð ÀÀ¿ë ÇÁ·Î±×·¥ ¼öÁØ¿¡¼­ ÀÌ·± ¿¹¿Ü °èÃþ±îÁö ±¸¼ºÇÏ´Â °æ¿ì´Â ±×¸® ÈçÇÏÁö ¾Ê´Ù. ±×·¯³ª ºÒƯÁ¤ ´Ù¼ö°¡ »ç¿ëÇÏ´Â ¶óÀ̺귯¸®ÀÇ °æ¿ì ¼÷·ÃµÈ »ç¿ëÀÚ¸¦ °¡Á¤ÇÒ ¼ö ¾øÀ¸¹Ç·Î ¶óÀ̺귯¸®°¡ °ß°íÇØÁö·Á¸é ½º½º·Î Á¤±³ÇÑ ¿¹¿Ü 󸮸¦ ÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ·± ¶óÀ̺귯¸®¸¦ ¸¸µé ¶§´Â ¿¹¿Ü 󸮿¡µµ ¸¹Àº ½Å°æÀ» ¾µ ¼ö¹Û¿¡ ¾ø°í ½Å°æ¾´¸¸Å­ Ç°ÁúÀº È®½ÇÈ÷ ÁÁ¾ÆÁø´Ù. ±×·¡¼­ C++Àº Æ°Æ°ÇÏ°í ¾ÈÁ¤ÀûÀÎ °´Ã¼¸¦ ¸¸µé±â À§ÇÑ ¹®¹ýÀ» Á¦°øÇÏ´Â °ÍÀÌ´Ù.

À̶§ ¶óÀ̺귯¸®°¡ ¿¹¿Ü¸¦ ¹Ýµå½Ã Á÷Á¢ ó¸®ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç ¶§·Î´Â Á÷Á¢ ó¸®Çϱ⿡ ºÎÀû´çÇÑ °æ¿ìµµ ¸¹´Ù. ¿¹¿Ü ¹ß»ý½Ã ¾î¶»°Ô ´ëóÇÒ °ÍÀΰ¡´Â ÀÀ¿ë ÇÁ·Î±×·¥¿¡ µû¶ó ´Þ¶óÁö´Âµ¥ °¡º­¿î ¿¹¿Ü¶ó¸é ¹«½ÃÇÏ°í Áö³ª°¥ ¼öµµ ÀÖ°í »ç¿ëÀÚ¿¡°Ô ¾Ë¸± ¼öµµ ÀÖ°í ½ÇÇàÀ» °è¼ÓÇÒ ¼ö ¾øÀ» Á¤µµ·Î Ä¡¸íÀûÀ̸®¸é Àû±ØÀûÀ¸·Î ÇØ°áÇØ¾ß ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ¶óÀ̺귯¸®´Â ¿¹¿Ü ¹ß»ý »ç½Ç°ú ¿øÀÎ µî »ó¼¼ÇÑ Á¤º¸¸¦ È£ÃâÃø¿¡ Àü´ÞÇϱ⸸ ÇÏ¸é µÈ´Ù.