Lanzar excepción fuera de rango en C++

Aditya Raj 12 octubre 2023
  1. Lanzar excepción fuera de rango en C++
  2. Error al arrojar una excepción fuera de rango en C++
Lanzar excepción fuera de rango en C++

En C++, podemos manejar excepciones usando bloques try-catch. También podemos lanzar una excepción explícitamente usando la instrucción throw.

Este artículo explica cómo lanzar una excepción fuera de rango en C++.

Lanzar excepción fuera de rango en C++

Para lanzar una excepción fuera de rango en C++, puede crear un objeto de excepción. Para esto, puedes usar el constructor out_of_range().

El constructor out_of_range() se define en la biblioteca estándar de C++. Toma un objeto de cadena como argumento de entrada y devuelve una excepción fuera de rango.

Puede lanzar la excepción usando la instrucción throw, como se muestra en el siguiente ejemplo.

#include <iostream>

int main() {
  int number = 100;
  if (number > 50) {
    throw std::out_of_range("I am an exception.");
  }
  return 0;
}

Producción :

terminate called after throwing an instance of 'std::out_of_range'
  what():  I am an exception.
Aborted

Aquí, primero hemos creado una variable llamada número. Luego, hemos comprobado si el valor en el número es mayor que 50.

En caso afirmativo, lanzamos una excepción fuera de rango definida en la biblioteca estándar de C++.

También puede manejar la excepción fuera de rango utilizando bloques try-catch. Lanzaremos la excepción en el bloque try.

Capturaremos la excepción fuera de rango e imprimiremos que hemos manejado la excepción en el bloque catch. Puedes observar esto en el siguiente ejemplo.

#include <iostream>

int main() {
  int number = 100;
  try {
    if (number > 50) {
      throw std::out_of_range("I am an exception.");
    }
  } catch (std::out_of_range) {
    std::cout << "I am here. Exception caught and handled.";
  }
  return 0;
}

Producción :

I am here. Exception caught and handled.

El resultado anterior muestra que el programa finalizó normalmente después de manejar la excepción fuera de rango. Por otro lado, el programa anterior fue abortado porque no manejamos la excepción.

Error al arrojar una excepción fuera de rango en C++

A veces es posible escribir un programa para generar una excepción fuera de rango en C++, como se muestra a continuación.

#include <iostream>

int main() {
  int number = 100;
  try {
    if (number > 50) {
      throw std::out_of_range;
    }
  } catch (std::out_of_range) {
    std::cout << "I am here. Exception caught and handled.";
  }
  return 0;
}

Cuando ejecutamos el código anterior, el programa se ejecutará en un error con el siguiente seguimiento de ejecución.

/tmp/EG06BKsTcd.cpp: In function 'int main()':
/tmp/EG06BKsTcd.cpp:8:36: error: expected primary-expression before ';' token
    8 |             throw std::out_of_range;
      |                                    ^

El error ocurre porque lanzamos std::out_of_range en lugar de un objeto de excepción fuera de rango. El constructor std::out_of_range es una definición de tipo utilizada para crear una excepción fuera de rango.

Por lo tanto, no puede lanzarlo usando una instrucción lanzar. Para lanzar una excepción fuera de rango en C++, debe crear una excepción fuera de rango pasando una cadena como argumento de entrada al constructor std::out_of_range(); solo entonces podrá lanzar la excepción fuera de rango con éxito en C++.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - C++ Exception