Skip to content

Files

Latest commit

梁世任梁世任
梁世任
and
梁世任
Aug 22, 2019
80793a9 · Aug 22, 2019

History

History

ch18

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 22, 2019
Aug 22, 2019
Aug 22, 2019
Aug 22, 2019

Chapter 18. Tools for Large Programs

Exercise 18.1

What is the type of the exception object in the following throws?

(a)range_error r("error"); throw r; (b)exception *p = &r; throw *P;

What would happen if the throw in (b) were written as throw p?

The type of the exception object in (a) is range_error which is used to report range errors in internal computations. The type of the exception object in (b) is exception. If the "throw" in (b) were written as "throw p", there will be a runtime error.

Exercise 18.2

Explain what happens if an exception occurs at the indicated point:

void exercise(int *b, int *e)
{
    vector<int> v(b,e);
    int *p = new int[v.size()];
    ifstream in("ints");
    // exception occurs here
}

The space "p" points will not be free. There will be a memory leak.

Exercise 18.3