Diferentes formas de terminar un programa en C++

Diferentes formas de terminar un programa en C++

En este artículo íbamos a conocer las diferentes formas con las que podremos terminar el programa en cualquier punto de la ejecución del programa C++.

Un programa solía terminar cuando se ejecutan las últimas líneas de código. Esto conduce a liberar los recursos asignados. Sin embargo, a veces puede surgir la necesidad de terminar un programa cuando se cumple alguna condición. Como todos los demás lenguajes de programación, hay ciertas funcionalidades disponibles para finalizar o terminar el programa en C++ en llamada.

Estas son las múltiples formas de terminar un programa en C++:-

  • Usando la instrucción return.
  • Usando el bloque Try and Catch.
  • Usando la función exit().
  • Usando la función _Exit().
  • Usando la función quick_exit().
  • Usando la función abortar().
  • Usando la función terminar().

Ahora, discutiremos diferentes métodos para terminar o salir de un programa en C++.

volver

En C++ el programa termina cuando return la declaración se encuentra en main() función del programa. Solíamos devolver 0 int el principal() función para representar una salida normal.

Cuando el compilador encuentra el return instrucción en main() función, todos los objetos estáticos se destruyen, lo que libera recursos. Esto sucede en el orden inverso de la inicialización de los objetos.

Tomemos un ejemplo,

#include <iostream>
using namespace std;
int main()
{
    cout << "Hi";
    return 0;
    cout << "Bye";
}

El resultado del código anterior:-

Output:-
Hi

En el resultado anterior, notamos que solo imprime Hola, ya que el programa termina al encontrar return declaración.

intentar y atrapar bloque

También existe otra forma de usar el return declaración. Sabemos sobre el intentar y atrapar bloque en C++. Si tratamos de pensar que un bloque de código puede arrojar alguna excepción. lo colocamos en el try bloque y si ocurre la excepción, queda atrapado en el catch bloquear. Esto evita que el programa finalice o se cierre en caso de que ocurra una excepción en C++.

Si usamos esto en main() función y coloque el return instrucción dentro de catch bloque, entonces el programa se cerrará normalmente como sucede y simultáneamente ocurre la limpieza requerida de recursos.

Tomemos un ejemplo,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout<< "Shikhar" << endl;
    try{
        throw;
    }
    catch(...){
        return 0;
    }
    cout << "Dhawan";
}

El resultado del código anterior:-

Output:-
Shikhar

En el resultado anterior, notamos que solo imprime Shikhar ya que colocamos la declaración de retorno dentro de catch bloque y debido a una excepción queda atrapado en el catch bloque que conduce a la terminación del programa.

salir()

La salida() la función está presente en stdlib.h archivo de encabezado y se usa para salir del programa cuando se encuentra. Siempre tenemos que especificar el código de salida dentro de la función. Este código puede ser constante EXIT_SUCCESS (que es 0) y EXIT_FAILURE que también se especifican en el mismo archivo de encabezado.

Ignora todas las declaraciones después de exit() se encuentra la función. También realiza la misma limpieza que en el método anterior.
El prototipo general de exit() es:-

void exit(int ExitCode);

Veamos en el ejemplo,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout << "Good Bye";
    exit(0);
    cout << "Sayonara";
}

El resultado del código anterior:-

Output:-
Good Bye

En el resultado anterior notamos que solo imprime Adiós ya que tan pronto como el control encuentra exit() función, ignora el resto del código y el programa termina.

_Salir()

Esta función finaliza un programa normalmente sin realizar ninguna limpieza de recursos como solía suceder en las funciones definidas anteriormente. Tampoco llama a atexit() función (que registra la función dada para ser llamada en la terminación normal del proceso, ya sea a través de exit(3) o mediante el retorno desde el main() del programa. Las funciones así registradas se llaman en el orden inverso al de su registro; no se pasan argumentos) controlador durante la terminación del programa.

También necesitamos especificar el código de salida en esta función.
El prototipo general de _Exit() es:-

void _Exit(int exit_code); // Here the exit_code represent the exit
                           // status of the program which can be 
                           // 0 or non-zero.

Por ejemplo,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout << "Hello" << endl;
    _Exit(0);
    cout << "Hi";
}

El resultado del código anterior:-

Output:-
Hello

En el resultado anterior, notamos que solo imprime Hello ya que el control encuentra _Exit(0) , finaliza el programa sin limpiar los recursos.

salida_rápida()

La salida_rápida() la función sale de un programa normalmente sin realizar una limpieza completa de los recursos relacionados con _Exit() función. Llama a los especificadores de at_quick_exit() (que registra una función que se llamará en la terminación rápida del programa, es decir, terminada a través de quick_exit() .La función registrada con at_quick_exit() se llama a la función cuando quick_exit() se llama a la función) en lugar de llamar a at_exit() durante la terminación.

Después de llamar a at_quick_exit() función, llama a _Exit() función para terminar el programa.

El prototipo general de quick_exit() es:-

void quick_exit(int exit_code);

Entonces, por ejemplo,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout << "Hello Hi" << endl;
    quick_exit(0);
    cout << "Bye Bye";
}

El resultado del código anterior:-

Output:-
Hello Hi

En el resultado anterior, notamos que solo imprime Hello Hi desde que el control encuentra quick_exit(0) función que llama a los especificadores de at_quick_exit() que a su vez llama a _Exit() función para terminar el programa.

abortar()

Esta función se define en cstdlib.h archivo de encabezado y provoca una salida anormal del programa y debe usarse solo en casos extremos. No se realiza ninguna limpieza de recursos y solo se envía una señal al sistema operativo sobre la terminación.

No llama al at_exit() o en_la_salida_rápida() funciones durante la terminación.
La declaración anterior sería clara a partir del código de muestra que se menciona a continuación,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout << "Hi" << endl;
    abort();
    cout << "Hello";
}

El resultado del código anterior:-

Output:-
Hi

En el resultado anterior, notamos que solo imprime Hola, ya que tan pronto como los controles encuentran abort() ocurre una terminación anormal del programa.

terminar()

Esta función se define en la excepción archivo de cabecera. El C++ llama directamente a esta función cuando el programa no puede ejecutarse más debido a razones como el lanzamiento de una excepción y no capturada y más, durante el tiempo de ejecución.

Cuando se llama directamente, llama al terminate_handler() y luego ejecuta abort() como se discutió anteriormente para causar una terminación anormal del programa.

Por ejemplo,

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    cout << "Rahul" << endl;
    terminate();
    cout << "Amitabh";
}

El resultado del código anterior:-

Output:-
Rahul
terminate called without an active exception

En el resultado anterior, notamos que imprime solo Hola con un mensaje "terminar llamada sin una excepción activa" ya que tan pronto como el control encuentra terminate() función una terminación anormal del programa sucede como sucedió anteriormente.