Обработка исключений.
Тест
Задание
№1
Напишите
класс Fraction, конструктор которого
принимает числитель и знаменатель. Если
пользователь передал в качестве
знаменателя 0,
то выбрасывайте исключение типа
std::runtime_error (которое находится в заголовочном
файле stdexcept). В функции main () попросите
пользователя ввести два целых числа.
Если числа, которые ввел пользователь,
корректные, то выводите создаваемый
объект класса Fraction. Если же числа
недопустимые, то вы должны обрабатывать
исключение типа std::exception и сообщить
пользователю, что он ввел некорректные
данные.
Текст
программы:
#include
<iostream>
#include
"stdexcept"
using
namespace
std;
class
Fraction
{
private:
int
numerator;
int
denominator;
public:
Fraction(int
n,
int
d)
{
if
(d
== 0)
throw
runtime_error("Denominator
can't be zero");
numerator
= n;
denominator
= d;
}
void
printF() { cout <<
"Numerator:
"
<<
numerator <<
";
Denominator: "
<<
denominator; }
};
void
createFraction(int
nr,
int
dr)
{
try
{ Fraction
a(nr,
dr);
a.printF(); }
catch
(const
runtime_error&
e) { cout <<
"Runtime
error: "
<<
e.what(); }
catch
(const
exception&)
{ cout <<
"Error";
}
}
int
main() {
cout
<<
"Enter
the numerator and denominator."
<<
endl;
int
up, down;
cin
>>
up >>
down;
createFraction(up,
down);
cout
<<
endl;
}
|
Результат
работы программы: