Throwing Two Types : Throw « Language « C++






Throwing Two Types

  
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <stdexcept>

using namespace std;

void readIntegerFile(const string& fileName, vector<int>& dest)
{
  ifstream istr;
  int temp;

  istr.open(fileName.c_str());
  if (istr.fail()) {
    throw invalid_argument("");
  }

  while (istr >> temp) {
    dest.push_back(temp);
  }

  if (istr.eof()) {
    istr.close();
  } else {
    istr.close();
    throw runtime_error("");
  }
}

int main(int argc, char** argv)
{
  vector<int> myInts;
  const string fileName = "IntegerFile.txt";

  try {
    readIntegerFile(fileName, myInts);
  } catch (const invalid_argument& e) {
    cerr << "Unable to open file " << fileName << endl;
    exit (1);
  } catch (const runtime_error& e) {
    cerr << "Error reading file " << fileName << endl;
    exit (1);
  }

  for (size_t i = 0; i < myInts.size(); i++) {
    cout << myInts[i] << " ";
  }
  cout << endl;

  return (0);
}
  
    
  








Related examples in the same category

1.throw an integer out
2.Throw Int out when reading integer file
3.Throw Char Star
4.Throwing Multiple Basic
5.Throwing Exceptions
6.throw different types of exceptions with if statement
7.Throwing Exceptions out of nested function calls
8.throw exception out of function
9.Restricting function throw types.Restricting function throw types.
10.Example of 'rethrowing' an exception.Example of 'rethrowing' an exception.
11.An exception can be thrown from outside the try blockAn exception can be thrown from outside the try block
12.Demonstrating stack unwinding.
13.Demonstration of rethrowing an exception.
14.checks for divide-by-zero and throw exception