예외처리

try - thow - catch 구조를 이용해라.

int main(){
    try {
        if (x) throw 1;
        M1 실행문
        }
    catch (int e) {
    M2 실행문
    }
    M3 실행문
}

x == true -> M2 - M3 순
x == false -> M1 -> M3 순으로 실행

인자의 타입과 일치하는 예외만 처리한다.

try {
    int person =0;
    ...
    if (persons == 0)
        throw persons; // int 값을 던지는데
    ...
}
catch(char e) // catch는 char 타입으로 받으니까 안된다!
{
    cout << "사람이 " << e << " 명 입니다. "<< endl;
}

여러 개의 catch block이 있을 수 있다. 그러나 수행되는 것은 한 개의 catch block뿐.

모든 타입의 예외를 잡고싶다면

catch(...) 을 이용하자.

int main(){
    try{
        if (x) throw 1;
        if (y) throw ‘a’;
        M1
    }
    catch (...){
        M2
    }
    catch (char e){
        M3
    }
    M4
}

if x == true, M2 -> M4
if x == false && y== true M2 -> M4 (M3 이 실행되는 게 아님!)
if x == false && y== false M1 -> M4

구체적인거 먼저 잡고, 일반적인걸 나중에 잡아라! 라는
범위가 작은 순에서 범위가 큰 순서로 잡으면 좋겠다! 라는!

상속도 됨.
catch의 경우 자식 클래스를 부모 클래스 위에 놔둬야 원하는 대로 코드가 작동함

'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글

TIL (22.05.30)  (0) 2022.05.30
TIL (22.05.25)  (0) 2022.05.25
TIL (22.05.18)  (0) 2022.05.18
TIL 22.05.11  (0) 2022.05.11
TIL (22.04.18)  (0) 2022.04.18