Exception handling in C++
- WHAT IS EXCEPTION HANDLING
- ADVANTAGES
- C++ EXCEPTION CLASSES
- TRY/CATCH
In C++, an exception is an event or object thrown at runtime. All
exceptions derive from the std::exception class. This is a runtime error that
can be handled. If we don't handle the exception, it prints the exception
message and stops the program.
Advantage: -This maintains the normal flow of the application. In this case, the rest of the code is also executed after the exception.
C++ exception classes
In the C++ standard, exceptions are defined as <exception> in a
class that we can use in our programs. The parent-child class hierarchy
arrangement is shown below:
Now let’s see C++ common exception classes
Exception |
Description |
std::exception |
It is an exception and parent class of all
standard C++ exceptions. |
std::logic_failure |
It is an exception that can be detected by
reading a code. |
std::runtime_error |
It is an exception that cannot be detected by reading
a code. |
std::bad_exception |
It is used to handle unexpected exceptions in a
C++ program. |
std::bad_cast |
This exception is generally thrown
by dynamic_cast. |
std::bad_typeid |
This exception is generally thrown
by typeid. |
std::bad_alloc |
This exception is generally thrown by new |
There are three types of exception-handling keywords: -
1) Try
2) Catch
3) Throw
Try/catch
In C++ programming, exception handling is done using a try/catch
statement. The C++ try block is used to place code that might throw an
exception. A Catch block is used to handle the exception.
Let us understand this by a simple C++ program
First, we try it without try/catch
#include <iostream>
using namespace std;
float division(int x, int y) {
return (x/y);
}
int main () {
int i = 50;
int j = 0;
float k = 0;
k = division(i, j);
cout << k << endl;
return 0;
}
Output
Floating point exception (core dumped)
Now let us try it with try/catch
#include <iostream>
using namespace std;
float division(int x, int y) {
if( y == 0 ) {
throw "Attempted to divide by zero!";
}
return (x/y);
}
int main () {
int i = 25;
int j = 0;
float k = 0;
try {
k = division(i, j);
cout << k << endl;
}catch (const char* e) {
cerr << e << endl;
}
return 0;
}
Output
No comments:
Post a Comment