A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FLanguage%2FThrow</id>
		<title>C++/Language/Throw - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FLanguage%2FThrow"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Language/Throw&amp;action=history"/>
		<updated>2026-04-17T03:46:38Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/Language/Throw&amp;diff=1907&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Language/Throw&amp;diff=1907&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/Language/Throw&amp;diff=1908&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Language/Throw&amp;diff=1908&amp;oldid=prev"/>
				<updated>2010-05-25T10:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An exception can be thrown from outside the try block==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void myFunction(int test)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Inside myFunction, test is: &amp;quot; &amp;lt;&amp;lt; test &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  if(test) throw test;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Start\n&amp;quot;;&lt;br /&gt;
  try { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Inside try block\n&amp;quot;;&lt;br /&gt;
    myFunction(0);&lt;br /&gt;
    myFunction(1);&lt;br /&gt;
    myFunction(2);&lt;br /&gt;
  }&lt;br /&gt;
  catch (int i) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught an exception -- value is: &amp;quot;;&lt;br /&gt;
    cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;End&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==checks for divide-by-zero and throw exception==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void divide(double a, double b)&lt;br /&gt;
 {&lt;br /&gt;
   try {&lt;br /&gt;
      if(!b) throw b;            // checks for divide-by-zero&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Result: &amp;quot; &amp;lt;&amp;lt; a/b &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
   catch(double b) {&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Can&amp;quot;t divide by zero.&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
 {&lt;br /&gt;
   double i, j;&lt;br /&gt;
   do {&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Enter numerator (0 to stop):&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
      cin &amp;gt;&amp;gt; i;&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Enter denominator: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
      cin &amp;gt;&amp;gt; j;&lt;br /&gt;
      divide (i,j);&lt;br /&gt;
    }&lt;br /&gt;
   while (i !=0);&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstrating stack unwinding.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::endl;&lt;br /&gt;
&lt;br /&gt;
using std::runtime_error;&lt;br /&gt;
void function3() throw ( runtime_error )&lt;br /&gt;
{&lt;br /&gt;
   throw runtime_error( &amp;quot;runtime_error in function3&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
void function2() throw ( runtime_error )&lt;br /&gt;
{&lt;br /&gt;
   function3();&lt;br /&gt;
}&lt;br /&gt;
void function1() throw ( runtime_error )&lt;br /&gt;
{&lt;br /&gt;
   function2();&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   try {&lt;br /&gt;
      function1();&lt;br /&gt;
   }catch ( runtime_error e ){&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Exception occurred: &amp;quot; &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstration of rethrowing an exception.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::endl;&lt;br /&gt;
#include &amp;lt;exception&amp;gt;&lt;br /&gt;
using std::exception;&lt;br /&gt;
void throwException() &lt;br /&gt;
{&lt;br /&gt;
   try {&lt;br /&gt;
      throw exception(); &lt;br /&gt;
   } &lt;br /&gt;
   catch( exception e )&lt;br /&gt;
   {&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Exception handled in function throwException\n&amp;quot;;&lt;br /&gt;
      throw;  &lt;br /&gt;
   } &lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;This also should not print\n&amp;quot;;&lt;br /&gt;
} &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   try {&lt;br /&gt;
      throwException();&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;This should not print\n&amp;quot;;&lt;br /&gt;
   }catch ( exception e ){&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Exception handled in main\n&amp;quot;;&lt;br /&gt;
   } &lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example of &amp;quot;rethrowing&amp;quot; an exception.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void myFunction()&lt;br /&gt;
{&lt;br /&gt;
  try {&lt;br /&gt;
    throw &amp;quot;hello&amp;quot;;                              // throw a char *&lt;br /&gt;
  }&lt;br /&gt;
  catch(const char *) {                         // catch a char *&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught char * inside myFunction\n&amp;quot;;&lt;br /&gt;
    throw ;                                     // rethrow char * out of function&lt;br /&gt;
  }                                             // myFunction&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Start\n&amp;quot;;&lt;br /&gt;
  try{&lt;br /&gt;
    myFunction();&lt;br /&gt;
  }&lt;br /&gt;
  catch(const char *) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught char * inside main\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;End&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Restricting function throw types.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
void myFunction(int test) throw(int, char, double)&lt;br /&gt;
{&lt;br /&gt;
  if(test==0) &lt;br /&gt;
     throw test;                // throw int&lt;br /&gt;
  if(test==1) &lt;br /&gt;
     throw &amp;quot;a&amp;quot;;                 // throw char&lt;br /&gt;
  if(test==2) &lt;br /&gt;
     throw 333.23;              // throw double&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;start\n&amp;quot;;&lt;br /&gt;
  try{&lt;br /&gt;
    myFunction(0);                       &lt;br /&gt;
  }&lt;br /&gt;
  catch(int i) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught an integer\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(char c) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught char\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(double d) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught double\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  try{&lt;br /&gt;
    myFunction(1);                       &lt;br /&gt;
  }&lt;br /&gt;
  catch(int i) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught an integer\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(char c) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught char\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(double d) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught double\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  try{&lt;br /&gt;
    myFunction(2);                       &lt;br /&gt;
  }&lt;br /&gt;
  catch(int i) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught an integer\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(char c) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught char\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  catch(double d) { &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Caught double\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;end&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==throw an integer out==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main () {&lt;br /&gt;
  try&lt;br /&gt;
  {&lt;br /&gt;
    throw 20;&lt;br /&gt;
  }&lt;br /&gt;
  catch (int e)&lt;br /&gt;
  {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;An exception occurred. Exception Nr. &amp;quot; &amp;lt;&amp;lt; e &amp;lt;&amp;lt; endl;&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throw Char Star==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;exception&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void readIntegerFile(const string&amp;amp; fileName, vector&amp;lt;int&amp;gt;&amp;amp; dest)&lt;br /&gt;
{&lt;br /&gt;
  ifstream istr;&lt;br /&gt;
  int temp;&lt;br /&gt;
  istr.open(fileName.c_str());&lt;br /&gt;
  if (istr.fail()) {&lt;br /&gt;
    throw &amp;quot;Unable to open file&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  while (istr &amp;gt;&amp;gt; temp) {&lt;br /&gt;
    dest.push_back(temp);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv)&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;int&amp;gt; myInts;&lt;br /&gt;
  const string fileName = &amp;quot;IntegerFile.txt&amp;quot;;&lt;br /&gt;
  try {&lt;br /&gt;
    readIntegerFile(fileName, myInts);&lt;br /&gt;
  } catch (const char* e) {&lt;br /&gt;
    cerr &amp;lt;&amp;lt; e &amp;lt;&amp;lt; endl;&lt;br /&gt;
    exit (1);&lt;br /&gt;
  }&lt;br /&gt;
  for (size_t i = 0; i &amp;lt; myInts.size(); i++) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; myInts[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==throw different types of exceptions with if statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void XHandler(int test){&lt;br /&gt;
   try {&lt;br /&gt;
      if(test==0) throw test;&lt;br /&gt;
      if(test==1) throw &amp;quot;String&amp;quot;;&lt;br /&gt;
      if(test==2) throw 123.23;&lt;br /&gt;
   }catch(int i){&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Caught exception #: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }catch(char *str){&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Caught string exception: &amp;quot; &amp;lt;&amp;lt; str &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }catch(double d){&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Caught exception #: &amp;quot; &amp;lt;&amp;lt; d &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
int main(void){&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Start: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   XHandler(0);&lt;br /&gt;
   XHandler(1);&lt;br /&gt;
   XHandler(2);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;End&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==throw exception out of function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void XHandler(int test){&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Inside XHandler, test is:&amp;quot; &amp;lt;&amp;lt; test &amp;lt;&amp;lt; endl;&lt;br /&gt;
    if(test) throw test;&lt;br /&gt;
}&lt;br /&gt;
int main(void){&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Start: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   try {&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Inside try block.&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
      XHandler(1);&lt;br /&gt;
      XHandler(2);&lt;br /&gt;
      XHandler(0);&lt;br /&gt;
    }&lt;br /&gt;
   catch(int i) {&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;Caught an exception. Value is: &amp;quot;;&lt;br /&gt;
      cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;End&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throwing Exceptions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void foo()&lt;br /&gt;
{&lt;br /&gt;
   int  i;&lt;br /&gt;
   i = -15;&lt;br /&gt;
   throw i;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   try {&lt;br /&gt;
      foo();&lt;br /&gt;
   }&lt;br /&gt;
   catch(int n)&lt;br /&gt;
      { cerr &amp;lt;&amp;lt; &amp;quot;exception caught\n &amp;quot; &amp;lt;&amp;lt; n &amp;lt;&amp;lt; endl; }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throwing Exceptions out of nested function calls==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void foo()&lt;br /&gt;
{&lt;br /&gt;
   int  i, j;&lt;br /&gt;
   i = 14;&lt;br /&gt;
   j = 15;&lt;br /&gt;
   throw i;&lt;br /&gt;
}&lt;br /&gt;
void call_foo()&lt;br /&gt;
{&lt;br /&gt;
   int  k;&lt;br /&gt;
   k  = 12;&lt;br /&gt;
   foo();&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   try {&lt;br /&gt;
      call_foo(); &lt;br /&gt;
   }&lt;br /&gt;
   catch(int n) { cout &amp;lt;&amp;lt; &amp;quot;\ncaught it &amp;quot; &amp;lt;&amp;lt; n &amp;lt;&amp;lt; endl; }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throwing Multiple Basic==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;exception&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void readIntegerFile(const string&amp;amp; fileName, vector&amp;lt;int&amp;gt;&amp;amp; dest)&lt;br /&gt;
{&lt;br /&gt;
  ifstream istr;&lt;br /&gt;
  int temp;&lt;br /&gt;
  istr.open(fileName.c_str());&lt;br /&gt;
  if (istr.fail()) {&lt;br /&gt;
    throw exception();&lt;br /&gt;
  }&lt;br /&gt;
  while (istr &amp;gt;&amp;gt; temp) {&lt;br /&gt;
    dest.push_back(temp);&lt;br /&gt;
  }&lt;br /&gt;
  if (istr.eof()) {&lt;br /&gt;
    istr.close();&lt;br /&gt;
  } else {&lt;br /&gt;
    istr.close();&lt;br /&gt;
    throw exception();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv)&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;int&amp;gt; myInts;&lt;br /&gt;
  const string fileName = &amp;quot;IntegerFile.txt&amp;quot;;&lt;br /&gt;
  try {&lt;br /&gt;
    readIntegerFile(fileName, myInts);&lt;br /&gt;
  } catch (const exception&amp;amp; e) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Unable either to open or to read &amp;quot; &amp;lt;&amp;lt; fileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
    exit (1);&lt;br /&gt;
  }&lt;br /&gt;
  for (size_t i = 0; i &amp;lt; myInts.size(); i++) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; myInts[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throwing Two Types==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;stdexcept&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void readIntegerFile(const string&amp;amp; fileName, vector&amp;lt;int&amp;gt;&amp;amp; dest)&lt;br /&gt;
{&lt;br /&gt;
  ifstream istr;&lt;br /&gt;
  int temp;&lt;br /&gt;
  istr.open(fileName.c_str());&lt;br /&gt;
  if (istr.fail()) {&lt;br /&gt;
    throw invalid_argument(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  while (istr &amp;gt;&amp;gt; temp) {&lt;br /&gt;
    dest.push_back(temp);&lt;br /&gt;
  }&lt;br /&gt;
  if (istr.eof()) {&lt;br /&gt;
    istr.close();&lt;br /&gt;
  } else {&lt;br /&gt;
    istr.close();&lt;br /&gt;
    throw runtime_error(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv)&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;int&amp;gt; myInts;&lt;br /&gt;
  const string fileName = &amp;quot;IntegerFile.txt&amp;quot;;&lt;br /&gt;
  try {&lt;br /&gt;
    readIntegerFile(fileName, myInts);&lt;br /&gt;
  } catch (const invalid_argument&amp;amp; e) {&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Unable to open file &amp;quot; &amp;lt;&amp;lt; fileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
    exit (1);&lt;br /&gt;
  } catch (const runtime_error&amp;amp; e) {&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Error reading file &amp;quot; &amp;lt;&amp;lt; fileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
    exit (1);&lt;br /&gt;
  }&lt;br /&gt;
  for (size_t i = 0; i &amp;lt; myInts.size(); i++) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; myInts[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Throw Int out when reading integer file==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;exception&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
void readIntegerFile(const string&amp;amp; fileName, vector&amp;lt;int&amp;gt;&amp;amp; dest)&lt;br /&gt;
{&lt;br /&gt;
  ifstream istr;&lt;br /&gt;
  int temp;&lt;br /&gt;
  istr.open(fileName.c_str());&lt;br /&gt;
  if (istr.fail()) {&lt;br /&gt;
    throw 5;&lt;br /&gt;
  }&lt;br /&gt;
  while (istr &amp;gt;&amp;gt; temp) {&lt;br /&gt;
    dest.push_back(temp);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv)&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;int&amp;gt; myInts;&lt;br /&gt;
  const string fileName = &amp;quot;IntegerFile.txt&amp;quot;;&lt;br /&gt;
  try {&lt;br /&gt;
    readIntegerFile(fileName, myInts);&lt;br /&gt;
  } catch (int e) {&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Unable to open file &amp;quot; &amp;lt;&amp;lt; fileName &amp;lt;&amp;lt; endl;&lt;br /&gt;
    exit (1);&lt;br /&gt;
  }&lt;br /&gt;
  for (size_t i = 0; i &amp;lt; myInts.size(); i++) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; myInts[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>