C++ #13 예외 처리

underlier12·2020년 2월 13일
0

C++

목록 보기
13/19
post-custom-banner

13. 예외 처리

예외 처리 구문

Exception이란 프로그램이 동작하는 과정에서 발생하는 예상치 못한 오류를 의미한다. C++에서는 발생할 가능성이 높은 오류에 대해서 Exception Handling을 할 수 있다.

Try-Catch

  • Try : 특정 코드 블록에서 예외가 발생할 수 있음을 명시
  • Catch : 발생한 예외에 대해서 핸들러가 특정한 내용을 처리
  • Throw : Try 구문에서 발생한 오류를 전달

예외 발생 예제

#include<iostream>

using namespace std;

int main(void) {
	int a = 7, b = 0;
	cout << a / b << 'n';
	system("pause");
}

실행 결과

0x009823EC에(Cpp.exe의) 처리되지 않은 예외가 있습니다. 
0xC0000094: Integer division by zero.

기본 예외 처리

#include<iostream>

using namespace std;

int main(void) {
	int a = 7, b = 0;
	try {
		if (b == 0) {
			throw"0으로나눌수없습니다.";
		}
		cout << a / b << 'n';
	}
	catch (const char * str) {
		cout << str << '\n';
	}
	system("pause");
}

실행 결과

0으로나눌수없습니다.

클래스 예외 처리

#include<iostream>

using namespace std;

template<typename T>
class Data{
private:
	T data;
public:
	Data(T data) : data(data) { }
	T getData() { return data; }
	Data<T> operator /(const Data<T>& other) {
		if (other.data == 0) {
			throw 0;
		}
		return Data(data / other.data);
	}
};

int main(void) {
	try {
		Data<int> a(7);
		Data<int> b(0);
		Data<int> result = a / b;
		cout << result.getData() << '\n';
	}
	catch (int e) {
		if (e == 0) {
			cout << "0으로나눌수없습니다.\n";
		}
	}
	system("pause");
}

실행 결과

0으로나눌수없습니다.
profile
logos and alogos
post-custom-banner

0개의 댓글