Ошибки времени выполнения

Опубликовано: 16 Декабря, 2021

Ошибки во время выполнения :

  • Ошибка выполнения в программе - это ошибка, которая возникает во время работы программы после успешной компиляции.
  • Ошибки времени выполнения обычно называются «ошибками» и часто обнаруживаются в процессе отладки перед выпуском программного обеспечения.
  • Когда ошибки времени выполнения возникают после того, как программа была распространена среди общественности, разработчики часто выпускают исправления или небольшие обновления, предназначенные для исправления ошибок.
  • Любой желающий может найти в этой статье список проблем, с которыми он может столкнуться, если он новичок.
  • При решении проблем на онлайн-платформах можно встретить множество ошибок времени выполнения, которые четко не указаны в сообщении, которое приходит с ними. Существует множество ошибок времени выполнения, таких как логические ошибки , ошибки ввода / вывода, ошибки неопределенного объекта, ошибки деления на ноль и многие другие.

Типы ошибок времени выполнения :

  • SIGFPE: SIGFPE - ошибка с плавающей запятой. Это практически всегда вызвано делением на 0 . В основном могут быть три основные причины ошибки SIGFPE, описанные ниже:
    1. Деление на ноль.
    2. Операция по модулю по нулю.
    3. Целочисленное переполнение.

    Ниже приведена программа, иллюстрирующая ошибку 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;
    }

    Выход:

  • SIGABRT: это сама ошибка, обнаруженная программой, тогда этот сигнал генерируется с использованием вызова функции abort (). Этот сигнал также используется стандартной библиотекой для сообщения о внутренней ошибке. Функция assert () в C ++ также использует abort () для генерации этого сигнала.

    Ниже приведена программа, иллюстрирующая ошибку 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;
    }

    Выход:

  • NZEC: эта ошибка обозначает «Ненулевой код выхода» . Для пользователей C эта ошибка будет сгенерирована, если метод main () не имеет оператора return 0 . Пользователи Java / C ++ могут сгенерировать эту ошибку, если вызовут исключение. Ниже приведены возможные причины появления ошибки NZEC:
    1. Бесконечная рекурсия или если у вас закончилась память стека.
    2. Доступ к отрицательному индексу массива.
    3. ArrayIndexOutOfBounds Exception.
    4. Исключение StringIndexOutOfBounds.

    Ниже приведена программа, иллюстрирующая ошибку 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 ])

    Выход:

  • SIGSEGV: эта ошибка является наиболее частой и известна как «ошибка сегментации». Он генерируется, когда программа пытается получить доступ к памяти, доступ к которой не разрешен, или пытается получить доступ к области памяти недопустимым способом. Список некоторых из распространенных причин ошибок сегментации:
    1. Доступ к массиву вне пределов.
    2. Разыменование указателей NULL.
    3. Разыменование освобожденной памяти.
    4. Разыменование неинициализированных указателей.
    5. Неправильное использование операторов «&» (адрес) и «*» (разыменование).
    6. Неправильные спецификаторы форматирования в операторах printf и scanf.
    7. Переполнение стека.
    8. Запись в постоянную память.

    Ниже приведена программа, иллюстрирующая ошибку 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);
    }

    Выход:

Способы избежать ошибок во время выполнения :

  • Избегайте использования переменных, которые не были инициализированы. В вашей системе они могут быть установлены на 0 , но не на платформе кодирования.
  • Проверяйте каждое вхождение элемента массива и убедитесь, что он не выходит за границы.
  • Не объявляйте слишком много памяти. Проверьте ограничение памяти, указанное в вопросе.
  • Избегайте объявления слишком большого объема памяти стека. Большие массивы следует объявлять глобально вне функции.
  • Используйте return в качестве конечного оператора.
  • Избегайте ссылок на свободную память или нулевые указатели.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене.

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.