C++ try Blocks Nesting

Description

C++ try Blocks Nesting

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main()//from  w  w  w .jav  a 2s .c  o  m
{
   string fileOne = "info.txt";
   string fileTwo = "info.bak";
   char ch;
   ifstream inFile;
   ofstream outFile;
   try
   {
      inFile.open(fileOne.c_str());
      if (inFile.fail()) throw fileOne;
      try
      {
         outFile.open(fileTwo.c_str());
         if (outFile.fail()) throw fileTwo;
         while ((ch = inFile.get()) != EOF)
            outFile.put(ch);
         inFile.close();
         outFile.close();
      }  // end of inner try block
      catch(string out)  // catch for inner try block
      {
         cout << "The backup file " << out << " was not successfully opened." << endl;
         exit(1);
      }
   }
   catch(string in)  // catch for outer try block
   {
      cout << "The input file " << in << " was not successfully opened." << endl << " No backup was made." << endl;
      exit(1);
   }
   cout << "A successful backup of " << fileOne << " named " << fileTwo << "was successfully made." << endl;
   return 0;
}



PreviousNext

Related