C++ 예외


C++ 예외

C++ 코드를 실행할 때 프로그래머의 코딩 오류, 잘못된 입력으로 인한 오류 또는 기타 예측할 수 없는 오류와 같은 다양한 오류가 발생할 수 있습니다.

오류가 발생하면 C++는 일반적으로 중지하고 오류 메시지를 생성합니다. 이에 대한 기술 용어는 C++에서 예외 가 발생 합니다(오류 발생).


C++ 시도 및 잡기

C++의 예외 처리는 try, throw및 3개의 키워드로 구성됩니다 catch.

명령문을 사용하면 실행 되는 try동안 오류를 테스트할 코드 블록을 정의할 수 있습니다.

문제가 감지되면 키워드 에서 throw예외가 발생하여 사용자 지정 오류를 생성할 수 있습니다.

catch명령문을 사용하면 try 블록에서 오류가 발생할 경우 실행할 코드 블록을 정의할 수 있습니다.

try및 키워드 catch쌍으로 제공됩니다.

예시

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

다음 예를 고려하십시오.

예시

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

설명된 예

블록을 사용하여 try일부 코드를 테스트합니다. age변수가 보다 작으면 18예외가 throw발생하고 catch블록에서 처리합니다.

catch블록에서 오류를 포착하고 이에 대해 조치를 취합니다. catch 명령문은 매개변수 를 취합니다 . 이 예에서 int변수( )를 사용하여( 블록( ) 에서 유형 myNum의 예외를 던지고 있기 때문에 ) 의 값을 출력합니다 .inttryageage

오류가 발생하지 않으면(예: if ageis 20대신 15, 즉 18보다 큼) catch블록을 건너뜁니다.

예시

int age = 20;

또한 throw키워드를 사용하여 구성 목적을 위한 사용자 지정 오류 번호/코드와 같은 참조 번호를 출력할 수 있습니다.

예시

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

모든 유형의 예외 처리(...)

블록에 사용된 throw 유형 을 모르는 경우 try블록 내부에 "점 3개" 구문( ...) 을 사용할 수 있습니다. 이 구문 catch은 모든 유형의 예외를 처리합니다.

예시

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}