OSgood의 개발일기

c++예외처리(Exception Handling) 본문

C++/문법

c++예외처리(Exception Handling)

OSgood 2018. 11. 11. 19:56
  • 예외 상황이란?

문법적 오류가 아닌 내가 구현한 프로그램의 흐름상 맞지 않는(나에게 반갑지 않은) 상황을 이야기한다.


  • 왜 필요할까?

나 또한 그랬고 많은 개발자들이 예외를 그냥  IF문만을 가지고 처리한다. 하지만 이 때 문제는 코드와 주석만을 가지고 예외처리를 위한 코드 부분이라는 것을 이해하여야 하기 때문에 가독성이 심하게 떨어지게 된다.


  • 어떻게?

1.try

-> 예외가 발생할 것 같은 부분! 이 때, 주의할 것은 발생할 것 같은 부분의 줄만 딱 try처리를 하는 것이 아니라 발생할 것 같은 부분의 work단위로 묶어야 한다는 것이다. 아래 예시의 주석을 통해 간단히 설명하겠지만 왜 work단위로 try를 묶으면 안되는지는 궁금하다면 좀 더 찾아보면서 공부하는 것을 추천한다.(왜냐하면 work 단위로 묶지 않으면 상당히 치명적이기 때문이다.)

2.throw

-> 발생한 예외 데이터가 무엇인지 던져준다.

3.catch

-> 발생한 예외 데이터를 잡는다.

  • 예시(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void 나누기(int a,int b)
{
    if(b == 0)
        thorw b;//이 부분을 통해 발생한 예외를 던져준다.
    
    cout<<"답은:"<< a/b<<endl;
}
void main()
{
    int a,b;
    cout<<"나눠질 숫자와 나눌 숫자를 입력하세요."
    cin>>a>>b;
    try
    {
        나누기(a,b);// try부분을 다음과 같이 work부분으로 묶어야한다. 만약 위에서 if(b==0)부분만을 try 처리하면 안 된다는 의미이다.
    }
    catch(int expn)//thow에서 던져준 값이 expn에 들어가게 된다.
    {
        cout<<"나누는 수는 "<<expn<<"이 될 수 없습니다!!"<<endl;
    }
}
cs


'C++ > 문법' 카테고리의 다른 글

Constructor & Destructor  (0) 2019.03.08
Call-By-Reference-참조자  (0) 2019.03.03
메모리 공간  (0) 2019.03.03
얕은 복사(shallow copy)의 문제점  (0) 2018.11.09
[class] C++ Inheritance(상속)  (0) 2018.11.05
Comments