Notice
Recent Posts
Recent Comments
Link
It won't hurt to try
[C++/윈도우프로그래밍응용]22. 예외 처리 본문
예외 처리
예외적인 상황에 의하여 발생한 오류에 대한 처리
- 세상에 완벽한 프로그램은 없음
- 잘못된 코드, 부정확한 데이터, 예외적 상황에 의해 오류(error)가 발생할 때 처리하기 위한 구조가 필요
- C++ 언어에서는 예외(exception)을 처리하기 위한 예외 처리(exception handling) 방법을 제공
try~catch문
try{
// 예외가 발생할 수 있는 코드
if (<예외 발생 조건>)
throw exception;
} catch (<예외 타입> <매개변수명>) {
// 예외를 처리하는 코드
} catch (...) {
// 구체적이지 않은 (범용) 예외를 처리하는 코드
}
try {
int num;
cout << "점수를 입력하세요 : " << endl;
cin >> num;
if(num > 100 || num < 0)
throw num;
cout << "입력한 점수는" << num << "점입니다." << endl;
} catch(int num) {
if(num>100) << cout << "점수는 100점을 얻었습니다."
if(num<0) << cout << "점수는 음수가 될 수 없습니다."
cout << endl;
exit(1);
}
평균과 합계를 구하는 프로그램
#include <iostream>
using namespace std;
int main()
{
try {
int sum = 0, num = 0, count = 0;
float average = 0;
cout << "개수 ? (1 이상)";
cin >> count;
if ( count < 1 ) throw 1;
for(int i=0; i<count; i++) {
cout << "숫자? (0~100) ";
cin >> num;
if(num < 0) throw 2;
if(num > 100) throw 3;
sum += num;
}
average = sum /count;
cout << "합계 : " << sum << endl;
cout << "평균 : " << average << endl;
} catch (int num) {
cerr << "ERROR : ";
switch(num) {
case 1:
cerr << "개수가 1 미만"; break;
case 2:
cerr << "개수가 0 미만"; break;
case 3:
cerr << "숫자가 100 초과"; break;
default:
cerr << "알 수 없는 오류"; break;
}
cerr << endl;
} catch (...) {
cerr << "FATAL ERROR : 알 수 없는 시스템 오류" << endl;
}
return 0;
}
300x250
300x250
'C++ > 윈도우프로그래밍응용' 카테고리의 다른 글
[C++/윈도우프로그래밍응용]24. 표준 템플릿 라이브러리(STL) (0) | 2021.11.02 |
---|---|
[C++/윈도우프로그래밍응용]23. 템플릿 (0) | 2021.10.30 |
[C++/윈도우프로그래밍응용]21. 파일 입출력 (0) | 2021.10.26 |
[C++/윈도우프로그래밍응용]20. 멤버 함수 재정의와 다중 상속 (0) | 2021.10.24 |
[C++/윈도우프로그래밍응용]19. 상속과 접근지정자 (0) | 2021.10.24 |
Comments