c:c_exception_handling
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
c:c_exception_handling [2017/10/12 10:24] – peter | c: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 | + | [[C - C++ Exception Handling:bad_alloc |
- | <code cpp> | + | [[C - C++ Exception Handling:Class Exceptions|Class Exceptions]] |
- | #include < | + | |
- | using namespace std; | + | |
- | + | ||
- | int main() | + | |
- | { | + | |
- | cout << " | + | |
- | + | ||
- | try { | + | |
- | cout << " | + | |
- | throw 1; // throw an error | + | |
- | cout << "This will not execute"; | + | |
- | } | + | |
- | catch (int i) { // catch an error | + | |
- | cout << " | + | |
- | cout << i << " | + | |
- | } | + | |
- | cout << " | + | |
- | return 0; | + | |
- | } | + | |
- | </ | + | |
+ | [[C - C++ Exception Handling: | ||
+ | [[C - C++ Exception Handling: | ||
- | ===== Multiple catch blocks ===== | + | [[C - C++ Exception |
- | + | ||
- | <code cpp> | + | |
- | #include < | + | |
- | + | ||
- | int main () | + | |
- | { | + | |
- | try | + | |
- | { | + | |
- | char * mystring; | + | |
- | mystring = new char [10]; | + | |
- | + | ||
- | if (mystring == NULL) | + | |
- | throw " | + | |
- | + | ||
- | for (int n=0; n<=100; n++) | + | |
- | { | + | |
- | if (n>9) | + | |
- | throw n; | + | |
- | + | ||
- | mystring[n]=' | + | |
- | } | + | |
- | } | + | |
- | catch (int i) | + | |
- | { | + | |
- | cout << "index " << i << " is out of range" << endl; | + | |
- | } | + | |
- | catch (char * str) | + | |
- | { | + | |
- | cout << "Exception: | + | |
- | } | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Class exceptions ===== | + | |
- | + | ||
- | <code cpp> | + | |
- | #include < | + | |
- | #include < | + | |
- | using namespace std; | + | |
- | + | ||
- | class forgetcode | + | |
- | { | + | |
- | public: | + | |
- | char Error[80]; | + | |
- | + | ||
- | forgetcode() { | + | |
- | cout<<" | + | |
- | } | + | |
- | + | ||
- | void display() | + | |
- | { | + | |
- | cout<<" | + | |
- | } | + | |
- | }; | + | |
- | + | ||
- | + | ||
- | int main() | + | |
- | { | + | |
- | int i; | + | |
- | + | ||
- | try { | + | |
- | cout << "Enter a positive number: "; | + | |
- | cin>> | + | |
- | + | ||
- | if(i< | + | |
- | throw forgetcode(); | + | |
- | else | + | |
- | cout<<" | + | |
- | } | + | |
- | | + | |
- | f.display(); | + | |
- | } | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Throwing Exception ===== | + | |
- | + | ||
- | <code cpp> | + | |
- | #include < | + | |
- | #include < | + | |
- | using std::cin; | + | |
- | using std:: | + | |
- | using std:: | + | |
- | using std:: | + | |
- | + | ||
- | class DivideByZeroException : public runtime_error | + | |
- | { | + | |
- | public: | + | |
- | | + | |
- | }; | + | |
- | + | ||
- | + | ||
- | double quotient( int numerator, int denominator ) | + | |
- | { | + | |
- | throw DivideByZeroException(); | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | + | ||
- | + | ||
- | int main() | + | |
- | { | + | |
- | try | + | |
- | { | + | |
- | double result = quotient( 1, 1 ); | + | |
- | cout << "The quotient is: " << result << endl; | + | |
- | } | + | |
- | | + | |
- | { | + | |
- | cout << " | + | |
- | } | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | </ | + | |
+ | [[C - C++ Exception Handling: | ||
- | ===== Throw Types ===== | + | [[C - C++ Exception Handling: |
- | <code cpp> | + | [[C - C++ Exception Handling: |
- | #include < | + | |
- | 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 ' | ||
- | if(val==2) | ||
- | throw 123.23; | ||
- | } | ||
- | |||
- | int main() | ||
- | { | ||
- | try{ | ||
- | f(0); // also, try passing 1 and 2 to f() | ||
- | } | ||
- | catch(int i) { | ||
- | cout << " | ||
- | } | ||
- | catch(char c) { | ||
- | cout << " | ||
- | } | ||
- | catch(double d) { | ||
- | cout << " | ||
- | } | ||
- | return 0; | ||
- | } | ||
- | </ | ||
c/c_exception_handling.1507803891.txt.gz · Last modified: 2020/07/15 09:30 (external edit)