classes/ftest10read.cpp

The following code example is taken from the book
Object-Oriented Programming in C++
by Nicolai M. Josuttis, Wiley, 2002
© Copyright Nicolai M. Josuttis 2002


CPPBook::Fraction readFraction()
{
    CPPBook::Fraction x;        // fraction variable
    bool              error;    // error occurred?

    do {
        error = false;   // no error yet

        /* try to read the fraction x and catch
         * errors of the type DenomIsZero
         */
        try {
            std::cout << "enter fraction (numer/denom): ";
            std::cin >> x;
            std::cout << "input was: " << x << std::endl;
        }
        catch (const CPPBook::Fraction::DenomIsZero&) {
            /* output error message and continue the loop
             */
            std::cout << "input error: numerator can not be zero"
                      << std::endl;
            error = true;
        }
    } while (error);

    return x;             // return read fraction
}