C++

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

6,411
목차
  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;

}

 



분류 제목
basic C++ - Switch (스위치 조건문) ★
basic C++ - While Loop (와일 반복문) ★
basic C++ - For Loop (포 반복문) ★
basic C++ - Break/Continue (브레이크/컨티뉴) 키워드 ★ - 반복문 빠져나가기 / 특정 조건 건너…
basic C++ - Arrays (배열)
basic C++ - references (참조변수) + 변수의 메모리 주소
basic C++ - Pointers (포인터)
function C++ - Functions (함수) - 정의/호출
function C++ - Function Parameters (함수 매개변수)
function C++ - Function Overloading (함수 오버로딩)
class C++ - OOP (객체 지향 프로그래밍)
class C++ - Class (클래스) / Object (객체)
class C++ - Class Methods (클래스 메서드)
class C++ - Constructors (생성자)
class C++ - Access Specifiers (접근지정자)
2/3
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱닷컴 PC버전 로그인