잘못된 코드, 부정확한 데이터, 예외적인 상황에 의해 발생하는 오류
문제가 발생한 경우라도 업무 처리가 계속될 수 있도록 하는 기능
int main()
{
int pizza_slices = 0;
int persons = 0;
int slices_per_person = 0;
cout << "피자 조각수를 입력하시오:";
cin >> pizza_slices;
cout << "사람 수를 입력하시오:";
cin >> persons;
slices_per_person = pizza_slices / persons;
cout << "한 사람당 피자는" << slices_per_person << "입니다." << endl;
return 0;
}
<aside> ➡️ 피자 조각수를 입력하시오: 12 사람 수를 입력하시오: 0 → 에러 발생
</aside>
if (pizza_slices < 0) {
cout << "피자 조각이 음수임";
} else if (pizza_slices == 0) {
cout << "피자 조각이 0임"
else {
if (persons == 0) {
cout << "사람이 0명입니다." << endl;
} else if (persons < 0) {
cout << "사람이 음수입니다." << endl;
} else {
slices_per_person = pizza_slices / persons;
cout << "한 사람당 피자는" << slices_per_person << "입니다." << endl;
}
}
}
try {
// 예외가 발생할 수 있는 블록
if(예외가 발생하면)
throw exception;
} catch (예외타입 매개변수) { // throw는 예외를 던진다.
// 예외가 발생하면 처리합니다.
}
try 블록은 예외가 발생할 수 있는 위험한 코드이다. catch 블록은 예외를 처리하는 코드이다.
int main()
{
int pizza_slice = 0;
int persons = -1;
int slices_per_person = 0;
try {
cout << "피자 조각수를 입력하시오:";
cin >> pizza_slices;
cout << "사람수를 입력하시오:";
cin >> persons;
if(persons == 0) // 사람이 0명이면
throw persons; // 오류라고 persons 값을 던질겁니다.
slices_per_person = pizza/persons;
cout << "한 사람당 피자는" << slices_per_person << "입니다." << endl;
}
catch (int e) { // 오류라고 신호가 오면 아래를 실행합니다.
cout << "사람이" << e << "명 입니다." << endl;
}
return 0;
}
<aside> ➡️ 피자 조각수를 입력하시오 : 12 사람 수를 입력하시오 : 0 사람이 0명 입니다.
</aside>
예외타입이 일치하는 것만 처리한다.
try {
int person = 0;
if (person == 0)
throw person; // int 형인데요.
}
catch(char e) { // char 형 예외만 처리해요.
cout << "사람이" << e << "명 입니다." << endl;
}