목차
Exceptions 정의
try...catch... 구문
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;
}
주소 복사
랜덤 이동