c++ programming: from problem analysis to program design, third edition
DESCRIPTION
C++ Programming: From Problem Analysis to Program Design, Third Edition. Chapter 16: Exception Handling. Objectives. In this chapter you will: Learn what an exception is Learn how to handle exceptions within a program See how a try / catch block is used to handle exceptions - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/1.jpg)
C++ Programming: From Problem Analysisto Program Design, Third Edition
Chapter 16: Exception Handling
![Page 2: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/2.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 2
Objectives
In this chapter you will:
• Learn what an exception is
• Learn how to handle exceptions within a program
• See how a try/catch block is used to handle exceptions
• Become familiar with C++ exception classes
![Page 3: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/3.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 3
Objectives (continued)
• Learn how to create your own exception classes
• Discover how to throw and rethrow an exception
• Explore stack unwinding
![Page 4: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/4.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 4
Exceptions
• Exception: undesirable event detectable during program execution
• If exceptions occurred during execution− Programmer-supplied code terminated the
program or
− Program terminated with an appropriate error message
• Can add exception-handling code at point where an error can occur
![Page 5: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/5.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 5
Handling Exceptions within a Program (continued)
• Function assert: − Checks if an expression meets certain
condition(s)
− If conditions are not met, it terminates the program
• Example: division by 0− If divisor is zero, assert terminates the
program with an error message
![Page 6: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/6.jpg)
Example 16-1
![Page 7: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/7.jpg)
![Page 8: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/8.jpg)
Example 16-2
![Page 9: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/9.jpg)
![Page 10: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/10.jpg)
Example 16-3
![Page 11: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/11.jpg)
![Page 12: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/12.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 12
C++ Mechanisms of Exception Handling
• The try/catch block handles exceptions
• Exception must be thrown in a try block and caught by a catch block
• C++ provides support to handle exceptions via a hierarchy of classes
![Page 13: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/13.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 13
try/catch Block
• Statements that may generate an exception are placed in a try block
• The try block also contains statements that should not be executed if an exception occurs
• The try block is followed by one or more catch blocks
![Page 14: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/14.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 14
try/catch Block (continued)
• The catch block:
− Specifies the type of exception it can catch
− Contains an exception handler
• If the heading of a catch block contains ... (ellipses) in place of parameters
− Catch block can catch exceptions of all types
![Page 15: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/15.jpg)
• General syntax of the try/catch block:
![Page 16: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/16.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 16
try/catch Block (continued)
• If no exception is thrown in a try block
− All catch blocks for that try block are ignored
− Execution resumes after the last catch block
• If an exception is thrown in a try block
− Remaining statements in that try block are ignored
![Page 17: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/17.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 17
try/catch Block (continued)
• The program searches catch blocks in order, looking for an appropriate exception handler
• If the type of thrown exception matches the parameter type in one of the catch blocks:
− Code of that catch block executes
− Remaining catch blocks are ignored
![Page 18: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/18.jpg)
![Page 19: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/19.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 19
Throwing an Exception
• For try/catch to work, the exception must be thrown in the try block
• General syntax to throw an exception is:
where expression is a constant value, variable, or object
![Page 20: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/20.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 20
Throwing an Exception (continued)
• The object being thrown can be
− Specific object
− Anonymous object
• In C++
− An exception is a value
− throw is a reserved word
![Page 21: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/21.jpg)
Throwing an Exception:
![Page 22: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/22.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 22
Order of catch Blocks
• catch block can catch− All exceptions of a specific type
− All types of exceptions
• A catch block with an ellipses (three dots) catches any type of exception
• In a sequence of try/catch blocks, if the catch block with an ellipses is needed− It should be the last catch block of that
sequence
![Page 23: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/23.jpg)
Using try/catch Blocks in a Program:
![Page 24: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/24.jpg)
![Page 25: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/25.jpg)
Example 16-6
![Page 26: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/26.jpg)
![Page 27: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/27.jpg)
Example 16-7
![Page 28: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/28.jpg)
![Page 29: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/29.jpg)
![Page 30: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/30.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 30
Using C++ Exception Classes
• C++ provides support to handle exceptions via hierarchy of classes
• The function what returns the string containing the exception object thrown by C++’s built-in exception classes
• The class exception is:− The base class of the exception classes
provided by C++
− Contained in the header file exception
![Page 31: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/31.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 31
Using C++ Exception Classes (continued)
• Two classes derived from exception:
− logic_error
− runtime_error
• logic_error and runtime_error are defined in header file stdexcept
• The class invalid_argument deals with illegal arguments used in a function call
![Page 32: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/32.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 32
Using C++ Exception Classes (continued)
• The class out_of_range deals with the string subscript out_of_range error
• The class length_error handles the error if
− A length greater than the maximum allowed for a string object is used
![Page 33: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/33.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 33
Using C++ Exception Classes (continued)
• If the operator new cannot allocate memory space− It throws a bad_alloc exception
• The class runtime_error deals with errors that occur only during program execution
• Classes overflow_error and underflow_error− Deal with arithmetic overflow and under-flow
exceptions− Derived from the class runtime_error
![Page 34: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/34.jpg)
Example 16-8: exceptions out_of_range and length_error
![Page 35: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/35.jpg)
![Page 36: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/36.jpg)
![Page 37: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/37.jpg)
Example 16-9: exception bad_alloc
![Page 38: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/38.jpg)
![Page 39: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/39.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 39
Creating Your Own Exception Classes
• Programmers can create exception classes to handle exceptions not covered by C++’s exception classes and their own exceptions
• C++ uses the same mechanism to process the exceptions you define as for built-in exceptions
• You must throw your own exceptions using the throw statement
• Any class can be an exception class
![Page 40: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/40.jpg)
Example 16-10
![Page 41: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/41.jpg)
![Page 42: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/42.jpg)
![Page 43: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/43.jpg)
• If you want to include members in your exception class, you typically include constructors and the function what.
• Consider the following definition of the class divisionByZero:
![Page 44: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/44.jpg)
![Page 45: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/45.jpg)
Example 16-11
![Page 46: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/46.jpg)
![Page 47: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/47.jpg)
Example 16-13
![Page 48: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/48.jpg)
![Page 49: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/49.jpg)
![Page 50: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/50.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 50
Rethrowing and Throwing an Exception
• When an exception occurs in a try block− Control immediately passes to one of the catch blocks
• A catch block either − Handles the exception or partially processes the
exception and then rethrows the same exception OR
− Rethrows another exception for the calling environment to handle
![Page 51: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/51.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 51
Rethrowing and Throwing an Exception (continued)• The general syntax to rethrow an exception
caught by a catch block is:
(in this case, the same exception is rethrown) or:
where expression is a constant value, variable, or object
![Page 52: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/52.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 52
Rethrowing and Throwing an Exception (continued)
• The object being thrown can be
− A specific object
− An anonymous object
• A function specifies the exceptions it throws in its heading using the throw clause
![Page 53: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/53.jpg)
• A function specifies the exceptions it throws (to be handled somewhere) in its heading using the throw clause.
• For example, the following function specifies that it throws exceptions of type int, string, and divisionByZero, where divisionByZero is the class as defined previously.
![Page 54: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/54.jpg)
Example 16-14
![Page 55: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/55.jpg)
![Page 56: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/56.jpg)
![Page 57: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/57.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 57
Exception Handling Techniques
• When an exception occurs, the programmer usually has three choices:
− Terminate the program
− Include code to recover from the exception
− Log the error and continue
![Page 58: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/58.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 58
Terminate the Program
• In some cases, it is best to let the program terminate when an exception occurs
• For example, if the input file does not exist when the program executes
− There is no point in continuing with the program
• The program can output an appropriate error message and terminate
![Page 59: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/59.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 59
Fix the Error and Continue
• In some cases, you will want to handle the exception and let the program continue
• For example, if a user inputs a letter in place of a number
− The input stream will enter the fail state
• You can include the necessary code to keep prompting the user to input a number until the entry is valid
![Page 60: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/60.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 60
Log the Error and Continue
• For example, if your program is designed to run a nuclear reactor or continuously monitor a satellite
− It cannot be terminated if an exception occurs
• When an exception occurs
− The program should write the exception into a file and continue to run
![Page 61: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/61.jpg)
Example 16-16
![Page 62: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/62.jpg)
![Page 63: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/63.jpg)
![Page 64: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/64.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 64
Stack Unwinding
• When an exception is thrown in, say, a function, the function can do the following:
− Do nothing
− Partially process the exception and throw the same exception or a new exception
− Throw a new exception
![Page 65: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/65.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 65
Stack Unwinding (continued)
• In each of these cases, the function-call stack is unwound
− The exception can be caught in the next try/catch block
• When the function call stack is unwound
− The function in which the exception was not caught and/or rethrown terminates
− Memory for its local variables is destroyed
![Page 66: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/66.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 66
Stack Unwinding (continued)
• The stack unwinding continues until
− A try/catch handles the exception or
− The program does not handle the exception
• If the program does not handle the exception, then the function terminate is called to terminate the program
![Page 67: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/67.jpg)
![Page 68: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/68.jpg)
Example 16-17
![Page 69: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/69.jpg)
![Page 70: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/70.jpg)
Example 16-18
![Page 71: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/71.jpg)
![Page 72: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/72.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 72
Summary
• Exception: an undesirable event detectable during program execution
• assert checks whether an expression meets a specified condition and terminates if not met
• try/catch block handles exceptions• Statements that may generate an exception are
placed in a try block• catch block specifies the type of exception it
can catch and contains an exception handler
![Page 73: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/73.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 73
Summary (continued)
• If no exceptions are thrown in a try block, all catch blocks for that try block are ignored and execution resumes after the last catch block
• Data type of catch block parameter specifies type of exception that catch block can catch
• catch block can have at most one parameter• Exception is base class for exception classes• what returns string containing the exception
object thrown by built-in exception classes
![Page 74: C++ Programming: From Problem Analysis to Program Design, Third Edition](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f1d550346895dbcae01/html5/thumbnails/74.jpg)
C++ Programming: From Problem Analysis to Program Design, Third Edition 74
Summary (continued)
• Class exception is in the header file exception• runtime_error handles runtime errors• C++ enables programmers to create their
own exception classes• A function specifies the exceptions it throws
in its heading using the throw clause• If the program does not handle the exception,
then the function terminate terminates the program