[14.1]
/*
사용자로부터 1부터 10까지의 정수 중 하나를 입력받고 제곱값을 출력하려고 한다.
사용자가 이 범위를 벗어난 정수값을 입력할 경우, 예외 처리를 통해 잘못 입력하였음을 알리도록 한다
*/
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout << "1개의 정수 입력(1~9): ";
cin >> num;
try
{
if (num < 0 || num>9)
throw num;
cout << "제곱값: " << num*num << endl;
}
catch (int num)
{
cout << num << "을 입력하셨네요! 잘못 입력하셨습니다" << endl;
}
return 0;
}
[14.2]
/*
연습문제 14.1에서 예외 상황이 발생했을 경우 예외처리를 한 후에 재입력을 요구하도록 한다
*/
#include <iostream>
using namespace std;
int main(void)
{
int num;
start:
cout << "1개의 정수 입력(1~9): ";
cin >> num;
try
{
if (num < 1 || num > 9)
throw num;
cout << "제곱값: " << num*num << endl;
}
catch (int num)
{
cout << num << "을 입력하셨네요! 잘못 입력하셨습니다" << endl;
cout << "다시 입력해주세요." << endl;
goto start;
}
return 0;
}
[14.3]
/*
예제 14.5에서 catch(...) 블록이 수행될 수 있도록 예외를 발생시켜 본다.
int, double형이 아닌 다른 값으로 throw 문을 수행하면 된다
*/
#include <iostream>
using namespace std;
int main(void)
{
int x, y;
cout << "2개의 정수 입력: ";
cin >> x >> y;;
try
{
if (y == 0)
throw 1;
if (x <= 0 || y <= 0)
throw 1.0;
if (x > 1 && y > 1)
throw "예외";
cout << "+: " << x + y << endl;
cout << "-: " << x - y << endl;
cout << "*: " << x*y << endl;
cout << "/: " << x / y << endl;
}
catch (int a) //예외 처리 핸들러:int 형
{
cout << "0으로 나눌 수는 없습니다" << endl;
}
catch (double a) //예외 처리 핸들러:double 형
{
cout << "x와 y는 음수가 될 수 없습니다" << endl;
}
catch (...) //예외 처리핸들러:모든 타입
{
cout << "모든 throw문을 수용할 수 있는 예외처리 핸들러입니다" << endl;
}
cout << "사칙연산 종료" << endl;
return 0;
}
[14.4]
/*
CPoint 클래스는 좌표값으로 0 또는 양수만을 수용할 수 있다.
CPoint 객체 하나를 만들고 사용자로부터 좌표를 읽어 들일 수 있도록 >> 연산자를 오버로딩한다.
그리고 >> 연산자 내에서 원하는 값(0 이상)이 입력되지 못할 경우 예외를 발생시켜 본다.
CPoint 클래스를 사용하는 main 함수에서는 예외 발생 시 이 예외를 처리할 수 있어야 한다.
*/
#include <iostream>
using namespace std;
class CPoint
{
private:
int x;
int y;
public:
CPoint(int a = 0, int b = 0) :x(a), y(b)
{
}
void Print()
{
cout << "입력하신 좌표값: ";
cout << "(" << x << ", " << y << ")" << endl;
}
friend istream &operator>>(istream &is, CPoint &Co);
};
istream &operator>>(istream &is, CPoint &Co)
{
cout << "좌표 입력:(x, y 둘 다 0 이상): ";
is >> Co.x >> Co.y;
if (Co.x < 0 || Co.y < 0)
throw CPoint();
return is;
}
int main(void)
{
try
{
cout << "좌표값 입력: ";
CPoint Co;
cin >> Co;
Co.Print();
}
catch (CPoint &Co)
{
cout << "좌표 값은 x와 y 둘다 0 이상 입력하시길 바랍니다" << endl;
}
return 0;
}
개발 환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 기초를 탄탄히 세워주는 C++ 프로그래밍 입문 황준하 저
'C++ > 기초를 탄탄히 세워주는 C++ 프로그래밍 입문(황준하 저)' 카테고리의 다른 글
기초를 탄탄히 세워주는 C++ 프로그래밍 입문 15장 연습문제 (0) | 2017.07.18 |
---|---|
기초를 탄탄히 세워주는 C++ 프로그래밍 입문 13장 연습문제 (0) | 2017.07.14 |
기초를 탄탄히 세워주는 C++ 프로그래밍 입문 12장 연습문제 (3) | 2017.07.12 |
기초를 탄탄히 세워주는 C++ 프로그래밍 입문 11장 연습문제 (0) | 2017.07.10 |
기초를 탄탄히 세워주는 C++ 프로그래밍 입문 10장 연습문제 (0) | 2017.07.07 |