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:28] 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:C++ Exceptions|C++ Exceptions]]+[[C - C++ Exception Handling:bad_alloc Exceptions|bad_alloc Exceptions]]
  
-[[C - C++ Exception Handling:C++ Standard Exceptions|C++ Standard Exceptions]]+[[C - C++ Exception Handling:Class Exceptions|Class Exceptions]]
  
 +[[C - C++ Exception Handling:Derived Class Exceptions|Derived Class Exceptions]]
  
 +[[C - C++ Exception Handling:Exceptions|Exceptions]]
  
 +[[C - C++ Exception Handling:Multiple catch blocks|Multiple catch blocks]]
  
-===== Multiple catch blocks =====+[[C - C++ Exception Handling:Standard Exceptions|Standard Exceptions]]
  
-<code cpp> +[[C - C++ Exception Handling:Throwing Exceptions|Throwing Exceptions]]
-#include <iostream.h> +
-  +
-int main () +
-+
-  try +
-  { +
-    char * mystring; +
-    mystring = new char [10];+
  
-    if (mystring == NULL)  +[[C - C++ Exception Handling:Throwing Types|Throwing Types]]
-       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> 
- 
- 
-===== Throw Types ===== 
- 
-<code cpp> 
-#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.1507804108.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki