Manejo de excepciones usando clases en C++

En este artículo, discutiremos cómo manejar las excepciones usando clases .

Manejo de excepciones:

  • Las excepciones son anomalías en tiempo de ejecución o condiciones anormales que encuentra un programa durante su ejecución.
  • Hay dos tipos de excepciones:
    • Excepción síncrona
    • Excepción asíncrona (Ej: que están fuera del control del programa, falla del disco, etc.).
  • C++ proporciona las siguientes palabras clave especializadas para este propósito:
    • try : representa un bloque de código que puede lanzar una excepción.
    • catch : representa un bloque de código que se ejecuta cuando se lanza una excepción particular.
    • throw : Se usa para lanzar una excepción. También se usa para enumerar las excepciones que lanza una función, pero que no se maneja sola.

Planteamiento del problema:

  • Cree una clase Números que tenga dos miembros de datos a y b .
  • Escribe funciones iterativas para encontrar el MCD de dos números .
  • Escribe una función iterativa para verificar si un número dado es primo o no. Si se determina que es verdadero , lanza una excepción a la clase MyPrimeException .
  • Defina su propia clase MyPrimeException .

Solución:

A continuación se muestra la implementación para ilustrar el concepto de manejo de excepciones usando clases:

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;
}
Producción:

GCD is = 1
13 is a prime number
Caught exception of MyPrimeException class.

Publicación traducida automáticamente

Artículo escrito por nileshkumar4872 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *