O'Reilly logo

Navigating C++ and Object-Oriented Design by Gail Anderson, Paul Anderson

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

4.6. Exception Objects

Up to now we have only thrown character string exceptions from functions that raise exceptions. This type of exception handling is limited and may not provide enough information for catch handlers in many programs. A better approach creates exception objects that use constructors to encapsulate information about why a function raised an exception. Once a function throws an exception object, a catch handler may call member functions that help the program decide what to do.

To illustrate why exception objects are beneficial, let's consider the File class constructors from page 186.

 Fifo::File(const char *fn, const char *mode = "w+") { fp = fopen(fn, mode); if (fp == NULL) throw "can't open file"; } Fifo::File() { fp = tmpfile(); ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required