User Tools

Site Tools


c:c_exception_handling

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
c:c_exception_handling [2017/10/12 10:24] peterc:c_exception_handling [2020/07/15 09:30] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== C - C++ Exception Handling ====== ====== C - C++ Exception Handling ======
  
-[[C - C++ Exception Handling:Standard Exceptions|Standard Exceptions]]+[[C - C++ Exception Handling:bad_alloc Exceptions|bad_alloc Exceptions]]
  
-<code cpp> +[[C C++ Exception Handling:Class Exceptions|Class Exceptions]]
-#include <iostream> +
-using namespace std; +
-  +
-int main() +
-+
-  cout << "Start\n"; +
-  +
-  try { +
-    cout << "Inside try block\n"; +
-    throw 1;                          // throw an error +
-    cout << "This will not execute"; +
-  } +
-  catch (int i) {                     // catch an error +
-    cout << "Caught an exception -- value is"; +
-    cout << i << "\n"; +
-  } +
-  cout << "End"; +
-  return 0; +
-+
-</code>+
  
 +[[C - C++ Exception Handling:Derived Class Exceptions|Derived Class Exceptions]]
  
 +[[C - C++ Exception Handling:Exceptions|Exceptions]]
  
-===== Multiple catch blocks ===== +[[C - C++ Exception Handling:Multiple catch blocks|Multiple catch blocks]]
- +
-<code cpp> +
-#include <iostream.h> +
-  +
-int main () +
-+
-  try +
-  { +
-    char * mystring; +
-    mystring = new char [10]; +
- +
-    if (mystring == NULL)  +
-       throw "Allocation failure"; +
-     +
-    for (int n=0; n<=100; n+++
-    { +
-      if (n>9)  +
-         throw n; +
- +
-      mystring[n]='a'; +
-    } +
-  } +
-  catch (int i) +
-  { +
-    cout << "index " << i << " is out of range" << endl; +
-  } +
-  catch (char * str) +
-  { +
-    cout << "Exception: " << str << endl; +
-  } +
-   +
-  return 0; +
-+
-</code> +
- +
- +
-===== Class exceptions ===== +
- +
-<code cpp> +
-#include <iostream> +
-#include <cstring> +
-using namespace std; +
-  +
-class forgetcode  +
-+
-public: +
-  char Error[80]; +
-   +
-  forgetcode() {  +
-    cout<<"Error has occured"; +
-  } +
-  +
-  void display() +
-  { +
-    cout<<"\nPlease Enter a positve number"; +
-  } +
-}; +
-  +
- +
-int main() +
-+
-  int i; +
- +
-  try { +
-    cout << "Enter a positive number: "; +
-    cin>>i; +
- +
-    if(i<0) +
-      throw forgetcode(); +
-    else +
-      cout<<"\nThe entered number is "<<i; +
-  } +
-  catch (forgetcode f) {  +
-    f.display(); +
-  } +
-  +
-  return 0; +
-+
-</code> +
- +
- +
- +
-===== Throwing Exception ===== +
- +
-<code cpp> +
-#include <iostream> +
-#include <stdexcept> +
-using std::cin; +
-using std::cout; +
-using std::endl; +
-using std::runtime_error; +
-  +
-class DivideByZeroException : public runtime_error +
-+
-public: +
-   DivideByZeroException::DivideByZeroException(): runtime_error( "attempted to divide by zero" ) {} +
-}; +
- +
-  +
-double quotient( int numerator, int denominator ) +
-+
-  throw DivideByZeroException(); // terminate function +
-  +
-  return 0; +
-+
-  +
- +
-int main() +
-+
-  try +
-  { +
-    double result = quotient( 1, 1 ); +
-    cout << "The quotient is: " << result << endl; +
-  } +
-  catch ( DivideByZeroException &divideByZeroException ) +
-  { +
-    cout << "Exception occurred: " << divideByZeroException.what() << endl; +
-  } +
-  +
-  return 0; +
-+
-</code>+
  
 +[[C - C++ Exception Handling:Standard Exceptions|Standard Exceptions]]
  
-===== Throw Types =====+[[C - C++ Exception Handling:Throwing Exceptions|Throwing Exceptions]]
  
-<code cpp> +[[C - C++ Exception Handling:Throwing Types|Throwing Types]]
-#include <iostream> +
-using namespace std; +
-  +
-// only throw ints, chars, and doubles +
-void f(int val) throw(int, char, double) +
-+
-  if(val==0)  +
-     throw val;+
  
-  if(val==1)  
-     throw 'a'; 
  
-  if(val==2)  
-     throw 123.23; 
-} 
-  
  
-int main() 
-{ 
-  try{ 
-    f(0); // also, try passing 1 and 2 to f() 
-  } 
-  catch(int i) { 
-    cout << "Caught an integer\n"; 
-  } 
-  catch(char c) {  
-    cout << "Caught char\n"; 
-  } 
-  catch(double d) {  
-    cout << "Caught double\n"; 
-  } 
  
-  return 0; 
-} 
-</code> 
  
c/c_exception_handling.1507803891.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki