In this article, we will discuss how to handle the exceptions using classes.
Exception Handling:
- Exceptions are run-time anomalies or abnormal conditions that a program encounters during its execution.
- There are two types of exceptions:
- Synchronous Exception
- Asynchronous Exception(Ex: which are beyond the program’s control, Disc failure, etc).
- C++ provides the following specialized keywords for this purpose:
Problem Statement:
- Create a class Numbers which has two data members a and b.
- Write iterative functions to find the GCD of two numbers.
- Write an iterative function to check whether any given number is prime or not. If found to be true, then throws an exception to class MyPrimeException.
- Define your own MyPrimeException class.
Solution:
- Define a class named Number which has two private data members as a and b.
- Define two member functions as:
- int gcd(): to calculate the HCF of the two numbers.
- bool isPrime(): to check if the given number is prime or not.
- Use constructor which is used to initialize the data members.
- Take another class named Temporary which will be called when an exception is thrown.
Below is the implementation to illustrate the concept of Exception Handling using classes:
C++
// C++ program to illustrate the concept // of exception handling using class #include <bits/stdc++.h> using namespace std;
// Class declaration class Number {
private :
int a, b;
public :
// Constructors
Number( int x, int y)
{
a = x;
b = y;
}
// Function that find the GCD
// of two numbers a and b
int gcd()
{
// While a is not equal to b
while (a != b) {
// Update a to a - b
if (a > b)
a = a - b;
// Otherwise, update b
else
b = b - a;
}
// Return the resultant GCD
return a;
}
// Function to check if the
// given number is prime
bool isPrime( int n)
{
// Base Case
if (n <= 1)
return false ;
// Iterate over the range [2, N]
for ( int i = 2; i < n; i++) {
// If n has more than 2
// factors, then return
// false
if (n % i == 0)
return false ;
}
// Return true
return true ;
}
}; // Empty class class MyPrimeException {
}; // Driver Code int main()
{ int x = 13, y = 56;
Number num1(x, y);
// Print the GCD of X and Y
cout << "GCD is = "
<< num1.gcd() << endl;
// If X is prime
if (num1.isPrime(x))
cout << x
<< " is a prime number"
<< endl;
// If Y is prime
if (num1.isPrime(y))
cout << y
<< " is a prime number"
<< endl;
// Exception Handling
if ((num1.isPrime(x))
|| (num1.isPrime(y))) {
// Try Block
try {
throw MyPrimeException();
}
// Catch Block
catch (MyPrimeException t) {
cout << "Caught exception "
<< "of MyPrimeException "
<< "class." << endl;
}
}
return 0;
} |
Output:
GCD is = 1 13 is a prime number Caught exception of MyPrimeException class.