Exception이란 프로그램이 동작하는 과정에서 발생하는 예상치 못한 오류를 의미한다. C++에서는 발생할 가능성이 높은 오류에 대해서 Exception Handling을 할 수 있다.
#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으로나눌수없습니다.