This preview shows pages 1–2. Sign up to view the full content.
1
Lecture 38 Announcements
• Assignment 7
Program due Friday; Q&A
• Exam 3 on Wednesday in class
No final during finals week
Exams back in lecture on Friday, course evals, +
more
• Topics of the day –
– More writing fault tolerant programs
– Exceptions – mostly not in the book (~Ch 24.12)
• Review for exam 3
Exception Handling Example
// this example illustrates prevention of a divide by zero error
#include <iostream>
using namespace std;
double divide(double, double);
int main()
{ double x, y, z;
cout << "Enter numerator followed by denominator: ";
cin >> x >> y;
z = divide(x, y);
//gracefully handle divide by zero
return 0;
}
double
divide(double a, double b)
{ try
{
if (b = = 0.0) throw b; // check for dividebyzero
return a / b;
}
catch (double b)
{
cout << "Can't divide by zero.” << endl;
}
return 0.0;
}
Exceptions  example 2
#include <math.h> // for sqrt() function
#include <string>
#include <iostream>
using namespace std;
int main()
{ bool flag = true;
while (flag)
{
cout << "Enter a positive real number: ";
double dX;
cin >> dX;
try
// Look for exceptions occuring within try block,route to attached catch block(s)
{
// If the user entered a negative number, this is an error condition
if (dX < 0.0)
throw
"Can not take sqrt of negative number"; // throw exception of type string
// Otherwise, print the answer and exit loop
else {cout << "The sqrt of " << dX << " is " << sqrt(dX) << endl; flag = false;}
}
catch
(string strException) // catch exceptions of type string
{
cerr << "Error: " << strException << endl;
}
}
return 0;
}
Purpose: take the
square root of a given
positive real number.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview. Sign up
to
access the rest of the document.
 Spring '08
 Shafer

Click to edit the document details