Errores de tiempo de ejecución

Errores de tiempo de ejecución :

  • Un error de tiempo de ejecución en un programa es un error que ocurre mientras el programa se ejecuta después de haber sido compilado con éxito.
  • Los errores de tiempo de ejecución se conocen comúnmente como «errores» y, a menudo, se encuentran durante el proceso de depuración antes de que se publique el software.
  • Cuando se producen errores de tiempo de ejecución después de que un programa se ha distribuido al público, los desarrolladores suelen lanzar parches o pequeñas actualizaciones diseñadas para corregir los errores.
  • Cualquiera puede encontrar la lista de problemas que podría enfrentar si es un principiante en este artículo .
  • Al resolver problemas en plataformas en línea, se pueden enfrentar muchos errores de tiempo de ejecución, que no están claramente especificados en el mensaje que los acompaña. Hay una variedad de errores de tiempo de ejecución que ocurren, como errores lógicos, errores de entrada/salida, errores de objetos indefinidos, errores de división por cero y muchos más.

Tipos de errores de tiempo de ejecución :

  • SIGFPE: SIGFPE es un error de punto flotante . Prácticamente siempre es causado por una división por 0 . Puede haber principalmente tres causas principales de error SIGFPE que se describen a continuación:
    1. División por cero.
    2. Módulo de Operación por Cero.
    3. Desbordamiento de enteros.

    A continuación se muestra el programa para ilustrar el error SIGFPE:

    C++

    // C++ program to illustrate
    // the SIGFPE error
      
    #include <iostream>
    using namespace std;
      
    // Driver Code
    int main()
    {
      
        int a = 5;
      
        // Division by Zero
        cout << a / 0;
        return 0;
    }

    Producción:

  • SIGABRT: es un error en sí mismo detectado por el programa, luego esta señal se genera usando la función de llamada para abortar() . La biblioteca estándar también utiliza esta señal para informar de un error interno. La función assert() en C++ también usa abort() para generar esta señal.

    A continuación se muestra el programa para ilustrar el error SIGBRT:

    C++

    // C++ program to illustrate
    // the SIGBRT error
      
    #include <iostream>
    using namespace std;
      
    // Driver Code
    int main()
    {
        // Assigning excessive memory
        int a = 100000000000;
        int* arr = new int[a];
      
        return 0;
    }

    Producción:

  • NZEC: este error denota «Código de salida distinto de cero» . Para los usuarios de C , este error se generará si el método main() no tiene una declaración de retorno 0 . Los usuarios de Java /C++ podrían generar este error si lanzan una excepción. A continuación se muestran las posibles razones para obtener un error NZEC:
    1. Recursión infinita o si se queda sin memoria de pila.
    2. Se accede al índice de array negativo.
    3. Excepción ArrayIndexOutOfBounds.
    4. Excepción StringIndexOutOfBounds.

    A continuación se muestra el programa para ilustrar el error NZEC:

    Python

    # Python program to illustrate
    # the NZEC Error
       
    # Driver Code
    if __name__ == "__main__":
          arr = [1, 2]
       
        # Runtime Error
        # Array Index out of Bounds
        print(arr[2])

    Producción:

  • SIGSEGV: Este error es el error más común y se conoce como “ Falla de Segmentación ”. Se genera cuando el programa intenta acceder a una memoria a la que no se le permite acceder o intenta acceder a una ubicación de memoria de una forma no permitida. La lista de algunas de las razones comunes de las fallas de segmentación son:
    1. Acceso a una array fuera de los límites.
    2. Eliminación de referencias a punteros NULL.
    3. Desreferenciando la memoria liberada.
    4. Desreferenciar punteros no inicializados.
    5. Uso incorrecto de los operadores “&” (dirección de) y “*” (desreferenciación).
    6. Especificadores de formato incorrectos en las sentencias printf y scanf.
    7. Desbordamiento de pila.
    8. Escritura en memoria de sólo lectura.

    A continuación se muestra el programa para ilustrar el error SIGSEGV:

    C++

    // C++ program to illustrate
    // the SIGSEGV error
    #include <bits/stdc++.h>
    using namespace std;
      
    // Function with infinite
    // Recursion
    void infiniteRecur(int a)
    {
        return infiniteRecur(a);
    }
      
    // Driver Code
    int main()
    {
      
        // Infinite Recursion
        infiniteRecur(5);
    }

    Producción:

Formas de evitar errores de tiempo de ejecución :

  • Evite utilizar variables que no hayan sido inicializadas. Estos pueden establecerse en 0 en su sistema pero no en la plataforma de codificación.
  • Verifique cada ocurrencia de un elemento de array y asegúrese de que no esté fuera de los límites.
  • Evite declarar demasiada memoria. Compruebe el límite de memoria especificado en la pregunta.
  • Evite declarar demasiada memoria de pila . Las arrays grandes deben declararse globalmente fuera de la función.
  • Utilice return como declaración final.
  • Evite hacer referencia a memoria libre o punteros nulos .

Publicación traducida automáticamente

Artículo escrito por NishaBharti 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 *