• 회원가입
  • 로그인
  • 구글아이디로 로그인

[class] C++ - Exceptions (= Try...Catch..) - 에러 제어

6,412  
목차
  1. Exceptions 정의
  2. try...catch... 구문
  3. throw의 exception 자료형 모르는 경우

 

Exceptions 정의

 

에러는 (의도적, 잘못 입력, 예측 불가 등) 여러 요인으로 생기는데,

C++은 프로그램 실행 중 에러 발생 시, 멈춘 후 에러 메세지를 생성.

즉, 정상적 실행의 예외적 경우 (= 오류)를 다루는 기술을 의미함.

 

 

try...catch... 구문

[구문]

 

try {

  //  오류 테스트 할 실행 코드.

  throw exception; // 문제 발생 시, 예외 처리.  (= 오류 생성)

}

catch(Exception e) {

  //  try 구문 안에서 오류 발생 시 실행할 코드.

}

 

PS. try...catch... 구문은 쌍으로 함께 사용.


[예제]

파일명: main.cpp


#include <iostream>

using namespace std;


int main() {

  try {

    int level = 2;

    if (level >= 3) {

      cout << "입장 가능.";

    } else {

      throw (level);

    }

  }

  catch (int lv) {

    cout << "접근 불가. level 3 이상 입장 가능.\n";

    cout << "Level : " << lv;  

  }

  return 0;

}

 

결과값:

접근 불가. level 3 이상 입장 가능.

Level : 2


PS1. 코드 설명.

※ level 3 미만 시, try 구문에서 예외처리 후 catch 구문에서 처리.

※ level 3 이상 시, try 구문 실행 후, catch 구문을 건너뜀.

 


PS3. 에러 코드 번호 반환도 가능.

※ 각 번호별로 에러 내용 정의 후, 해당 에러 번호 지정 가능.

 

#include <iostream>

using namespace std;


int main() {

  try {

    int level = 2;

    if (level >= 3) {

      cout << "입장 가능.";

    } else {

      throw 505;

    }

  }

  catch (int error) {

    cout << "접근 불가. level 3 이상 입장 가능.\n";

    cout << "에러번호 : " << error;  

  }

  return 0;

}

 

결과값:

접근 불가. level 3 이상 입장 가능.

에러번호 : 505

 

throw의 exception 자료형 모르는 경우

 

try 구문 안의 throw 타입 모르는 경우,

catch 구문 매개변수에 점 3개(...) 사용.

즉, ... 매개변수는 어떤 타입의 Exception이든 처리 가능.

 


[예제]

 

#include <iostream>

using namespace std;


int main() {

  try {

    int level = 2;

    if (level >= 3) {

      cout << "입장 가능.";

    } else {

      throw 505;

    }

  }

  catch (...) {

    cout << "접근 불가. level 3 이상 입장 가능.\n";

  }

  return 0;

}

 



분류 제목
class C++ - OOP (객체 지향 프로그래밍)
class C++ - Class (클래스) / Object (객체)
class C++ - Class Methods (클래스 메서드)
class C++ - Constructors (생성자)
class C++ - Access Specifiers (접근지정자)
class C++ - Encapsulation (캡슐화)
class C++ - Inheritance (상속)
class C++ - Polymorphism (다형성)
class C++ - Files (파일) - 파일생성/파일읽기/파일쓰기
class C++ - Exceptions (= Try...Catch..) - 에러 제어
목록
찾아주셔서 감사합니다. Since 2012