ABOUT ME

-

  • 예외 처리를 해보자
    Programming/C++ 2019. 12. 16. 18:21

    안녕하세요. Teemol입니다.

    오늘은 C++에서 예외 처리하는 방법에 대해서 알아보도록 하겠습니다.


    예외 처리란? 프로그램에서 오류가 발생했을  처리를 중단하고 다른 처리가 진행될 수 있도록 하는 것입니다.


    프로그램에서 발생할 수 있는 오류는 아주 다양합니다. 그 중에서 이번에는 아주 간단한 처리만 알아보겠습니다.


    먼저 명시된 오류에 대한 처리입니다.


    1
    2
    3
    4
            std::vector<int> vec;
            vec.push_back(1);
     
            int num = vec.at(1);
    cs


    위와 같이 vector를 만들고 push_back을 한번 해서 size가 1인 경우 vec.at(1)로 접근할 경우 아무것도 없기 때문에 오류가 발생합니다.

    이 경우는 명시가 돼있는 예외입니다.



    이런 경우 위와 같이 오류의 타입을 알 수 있습니다.


    이러한 경우에는 아래와 같이 간단하게 예외 처리가 가능합니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
        try {
            std::vector<int> vec;
            vec.push_back(1);
     
            int num = vec.at(1);
        }
        catch (std::out_of_range e) {
     
        }
    cs

    위와 같이 모든 에러가 명시되어 있다면 편하겠지만 그렇지 않은 경우 사용자가 throw를 사용해서 처리해야
    합니다.

    아래의 예제가 명시되지 않은 오류 입니다.



    이 경우 아래와 같이 throw를 알려줘야 합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        try {
            char* cPtr = nullptr;
     
            if (cPtr == nullptr)
                throw 1;
     
            char csPtr = *cPtr;
        }
        catch (int e){
     
        }
    cs

    이렇게 하면 자신이 보면 int형의 throw가 catch에서 받아지게 됩니다.


    이런 식으로 exception을 만들 수도 있고 처리할 수 도 있습니다.



    감사합니다.


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

    구조체 크기!  (0) 2020.06.08
    파이썬을 사용해보자!  (0) 2020.04.04
    [MFC] CString -> string 변환  (0) 2020.01.31
    Dumpbin을 사용해보자! [Dependents, Headers]  (0) 2019.09.24

    댓글

Designed by Tistory.