Computer Security

#15 C++ 예외 처리 본문

프로그래밍/C++

#15 C++ 예외 처리

쿠리 Kuri 2022. 6. 26. 18:30

예외
예외(Exception)란 프로그램이 동작하는 과정에서 발생하는 예상치 못한 오류(Error) 의미한다.

C++에서는 발생할 가능성이 높은 오류에 대해서 예외 처리(Exception Handling)을 할 수 있도록 해준다.

 

예외 처리 구문
C++은 TRY – CATCH 구문을 이용해서 예외 처리를 수행할 수 있도록 한다.
- Try: 특정한 코드 블록에서 예외가 발생할 수 있음을 명시한다. (Try구문 안에서 예외부분 처리작업을 한다.)
- Throw: Try 구문에서 발생한 오류를 전달합니다.(처리작업중 예외가 나오면 밖으로 던진다.)

- Catch: 발생한 예외에 대해서 핸들러가 특정한 내용을 처리합니다. (던진걸 받아서 처리한다.)

 

예외 발생 예제

#include <iostream>
using namespace std;
int main(void) {
int a = 7, b = 0;
cout << a / b << 'n';
system("pause");
}

이렇듯 0으로 나누려고 하면 프로그램이 실행 되지 않는다.

 

따라서, 코드를 해결 해보자.

 

코드 예시

#include <iostream>

using namespace std;

int main(void) {
	int a = 7, b = 0;
	try { //try이 영역안에서 예외처리 작업을한다.
		if (b == 0) { //만약 0이라면
			throw "0으로 나눌 수 없습니다."; 
			//아래가 출력안되고,0으로 나눌 수 없습니다.라는 문구와 함께 밖으로 던져준다.
		}
		cout << a / b << 'n';
	}
	catch (const char* str) { //여기서 잡아서 해당 내용을 출력 해준다.
		cout << str << '\n';
	}
	system("pause");
}

결과 값

 

예외 처리 예제 2) 클래스에서의 예외 처리 

#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;  //나눌 데이터가 0이면 캐치부분으로 이동해 0으로 나눌 수 없습니다가 출력된다.
		}
		return Data(data / other.data);
	}
};
int main(void) {
	try {
		Data<int> a(7); //a에 7대입
		Data<int> b(0); //b에 0대입
		Data<int> result = a / b;
		cout << result.getData() << '\n';
	}
	catch (int e) {
		if (e == 0) {
			cout << "0으로 나눌 수 없습니다.\n";
		}
	}
	system("pause");
}

결과 값

 

Comments