程序代写代做代考 CIS 22B – Exceptions

CIS 22B – Exceptions
Manish Goel

Exceptions
• Indicate that something unexpected has occurred or been detected
• Allow program to deal with the problem in a controlled manner
• Can be as simple or complex as program design requires
• Exception: object or value that signals an error
• Throw an exception: send a signal that an error has occurred
• Catch/Handle an exception: process the exception; interpret the signal

Exceptions – How they work
• throw – followed by an argument, is used to throw an exception
• try – followed by a block { }, is used to invoke code that throws an exception
• catch – followed by a block { }, is used to detect and process exceptions thrown in preceding try block. Takes a parameter that matches the type thrown.
• A function that throws an exception is called from within a try block
• If the function throws an exception, the function terminates and the try block is immediately exited. A catch block to process the exception is searched for in the source code immediately following the try block.
• If a catch block is found that matches the exception thrown, it is executed. If no catch block that matches the exception is found, the program terminates.

Exceptions – Example
// function that throws an exception
int totalDays(int days, int weeks)
{
if ((days < 0) || (days > 7))
throw “invalid number of days”;
// the argument to throw is the character string
else }
return (7 * weeks + days);
// in the caller or main
try // block that calls function {
totDays = totalDays(days, weeks);
cout << "Total days: " << days; } catch (char *msg) //interpret exception from char string passed { cout << "Error: " << msg; } From Program 16-1 From Program 16-1 What Happens in theTry/Catch Construct What if no exception is thrown? Exceptions - Notes • Predefined functions such as new may throw exceptions • Value thrown does not need to be used in catch block. – so, no name is needed in catch parameter definition – catch block parameter definition does need the type of exception being caught • An exception will not be caught if – it is thrown from outside of a try block – there is no catch block that matches the data type of the thrown exception • If an exception is not caught, the program will terminate Exceptions – Notes (2) • Once an exception is thrown, the program cannot return to throw point. The function executing throw terminates (does not return), other calling functions in try block terminate, resulting in unwinding the stack • If objects were created in the try block and an exception is thrown, they are destroyed. • Nested try blocks – try/catch blocks can occur within an enclosing try block. Exceptions caught at an inner level can be passed up to a catch block at an outer level: catch ( ) { ... throw; // pass exception up } // to next level Exceptions and Objects • An exception class can be defined in a class and thrown as an exception by a member function • An exception class may have: – no members: used only to signal an error – members: pass error data to catch block • A class can have more than one exception class Contents of Rectangle.h (Version1) (Continued) Program 16-2 (Continued)